如何验证提交ActiveRecord的单个属性而不是所有属性?
我正在使用Ruby on Rails 3,我想验证提交ActiveRecord的单个属性,而不是所有属性。如何验证提交ActiveRecord的单个属性而不是所有属性?
例如,在我的模型,我有:
validates :firstname, :presence => true, ...
validates :lastname, :presence => true, ...
我想对:firstname
并在:lastname
分别运行验证。 这可能吗?如果是这样,我该如何做到这一点?
P.S:我知道,是为了进行验证有像“validates_presence_of”,“validates_confirmation_of” ...的方法,但我想只使用上面的代码。
你可以设置你的模型虚拟属性,然后根据该属性进行条件验证。
你可以找到http://railscasts.com/episodes/41-conditional-validations
伟大的解决方案! – fl00r 2011-03-20 15:45:32
你可以删除你的代码的第二线之上,所以它读取:名字:
validates :firstname, :presence => true
没有确认将被上进行。
问候
罗宾
我想验证':firstname'和(然后)分别验证':lastname',所以我需要第二部分。 – user502052 2011-03-20 08:53:09
class Model < ActiveRecord::Base
def save(*attrs)
Model.validates :firstname, :presence => true if attrs.empty? || attrs.include?(:firstname)
Model.validates :lastname, :presence => true if attrs.empty? || attrs.include?(:lastname)
...
super
end
end
m = Model.new
m.save
#=> false
m.save(nil) # same as save(false), you can use both of them
#=> true
m = Model.new :firstname => "Putty"
m.save
#=> false
m.save(:firstname, :lastname)
#=> false
m.save(:firstname)
#=> true
这个截屏你是什么意思'separately'?会有2个电话来保存例如,还是只有一个?你想要做什么的用例/场景是什么? – Zabba 2011-03-20 10:55:17