我有一个看起来像这样的验证:
class Book < ActiveRecord::Base
belongs_to :author
validates :name, uniqueness: { scope: :author_id }
end
问题是我想允许作者 id 为 nil 的重复名称。有没有办法使用 validates 方法(而不是自定义验证)来做到这一点?
我有一个看起来像这样的验证:
class Book < ActiveRecord::Base
belongs_to :author
validates :name, uniqueness: { scope: :author_id }
end
问题是我想允许作者 id 为 nil 的重复名称。有没有办法使用 validates 方法(而不是自定义验证)来做到这一点?
是的,在验证器上使用Proc
and 。:unless
class Book < ActiveRecord::Base
belongs_to :author
validates :name, uniqueness: { scope: :author_id }, unless: Proc.new { |b| b.author_id.blank? }
end
推荐阅读: http: //guides.rubyonrails.org/active_record_validations.html#using-a-proc-with-if-and-unless
使其有条件:
validates :name, uniqueness: { scope: :author_id }, if: :author_id?