我有一个rails应用程序,其中活动是具有以下属性的资源之一:
我想为状态为“进行中”的活动创建新记录,因为没有具有相同状态的现有活动。我相信这可以使用模型验证来完成,但对于rails我是新手,我不知道如何。
答案 0 :(得分:1)
如果status
是enum
,您可以这样做:
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