Ruby on rails 如何在rails中执行模型验证?

Ruby on rails 如何在rails中执行模型验证?,ruby-on-rails,validation,rails-activerecord,Ruby On Rails,Validation,Rails Activerecord,我有一个rails应用程序,活动是具有以下属性的资源之一: 状态(记录活动“进行中”、“完成”的状态) 开始(活动开始的日期) 结束(活动结束的日期) 我想为状态为“进行中”的活动创建一个新记录,因为没有具有相同状态的现有活动。我相信这可以通过模型验证来实现,但作为rails的新手,我不知道如何实现。如果状态是枚举,您可以: class Activity < ApplicationRecord enum status: [ :in_progress, :complete ]

我有一个rails应用程序,活动是具有以下属性的资源之一:

  • 状态(记录活动“进行中”、“完成”的状态)
  • 开始(活动开始的日期)
  • 结束(活动结束的日期)

我想为状态为“进行中”的活动创建一个新记录,因为没有具有相同状态的现有活动。我相信这可以通过模型验证来实现,但作为rails的新手,我不知道如何实现。

如果
状态
枚举,您可以:

class Activity < ApplicationRecord
  enum status: [ :in_progress, :complete ]

  validates_uniqueness_of :status, if: :in_progress?
end
class Activity < ApplicationRecord
  validates_uniqueness_of :status, if: proc { |activity| activity.status == 'in_progress' }
end

您是否正在使用
enum
作为
status
属性?我现在正在使用
string
,但是
enum
更有意义