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

时间:2017-05-26 02:33:00

标签: ruby-on-rails validation rails-activerecord

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

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

我想为状态为“进行中”的活动创建新记录,因为没有具有相同状态的现有活动。我相信这可以使用模型验证来完成,但对于rails我是新手,我不知道如何。

1 个答案:

答案 0 :(得分:1)

如果statusenum,您可以这样做:

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

  validates_uniqueness_of :status, if: :in_progress?
end

此验证限制您只有一个activity状态为in_progress

如果status是一个字符串,您可以这样做:

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