Lyn*_*ynn 3 validation activerecord ruby-on-rails
我有一个模型,它使用“活动”标志来软删除项目而不是销毁它们。该模型具有“名称”属性,该属性在活动项中必须是唯一的。我试图将conditions修饰符与 一起使用validates_uniqueness_of,但它似乎仍在检查活动和非活动项目的唯一性。我究竟做错了什么?
class Foo < ActiveRecord::Base
attr_accessible :name, :active
validates_uniqueness_of :name, conditions: -> { where(active:true) }
end
Run Code Online (Sandbox Code Playgroud)
您可以为此结合使用scope和if修饰符:
scope :active, where(:active => true)
validates :name, :uniqueness => {:message => 'That name is in use', :if => :active?, :scope => :active}
Run Code Online (Sandbox Code Playgroud)
这将导致仅活动的项目触发验证,并且验证将仅考虑活动项目之间的唯一性。
我已经确认这适用于 Rails 3 和 4。
| 归档时间: |
|
| 查看次数: |
5660 次 |
| 最近记录: |