我有这个验证
validates :contact_id, :presence => true, :uniqueness => {:message => 'has an account already.'}
application.rb模型中的
一切都很好,但如果状态为“无效”,我只需要进行此验证
例如,在应用程序表中有一个名为state
的字段,如果有一个用户contact_id
的应用程序且状态为“无效”,则此验证不应生效,应该让用户保存应用程序
答案 0 :(得分:9)
我相信应该这样做:
validates :contact_id,
:presence => true,
:uniqueness => {:message => 'has an account already.'},
:if => :invalid?
def invalid?
state == 'invalid'
end
您还可以将其内联到:
validates :contact_id,
:presence => true,
:uniqueness => {:message => 'has an account already.'},
:if => lambda{ state == 'invalid' }
希望这有帮助。
如果您要在状态not
无效时执行此操作,那么您可以通过以下两种方式执行此操作:
validates :contact_id,
:presence => true,
:uniqueness => {:message => 'has an account already.'},
:unless => :invalid?
或者您可以更改一下并拥有一条有效的消息,我可能更喜欢这样:
validates :contact_id,
:presence => true,
:uniqueness => {:message => 'has an account already.'},
:if => :valid?
def valid?
state != 'invalid'
end
答案 1 :(得分:4)
您是否尝试过观看此视频直播视频? http://railscasts.com/episodes/41-conditional-validations
validates :contact_id, :if => :should_validate_contactid?
def should_validate_contactid?
Check condition
end