我的模型中有验证方法
def validate
super
if some condition
errors.add('', 'some text')
end
end
此方法调用Create和Update。我不想打电话给Update。我怎么能这样做?
我正在使用rails2.3.11和jruby。
更新:
我可以使用这个validate :custom_validation, :on => :create
,但他们如何调用创建和更新?
我还检查了validate_on_create
,但是当validate
被调用时,我仍然不知道吗?
答案 0 :(得分:7)
使用
validate :custom_validation, :on => :create
并将您的方法名称从validate
更改为custom_validation
,即
def custom_validation
super
if some condition
errors.add('', 'some text')
end
end
并且上述方法仅在创建而不是在更新时调用
答案 1 :(得分:0)
使用:on => :create
,对我而言,在运行Rails 4.2.5.1的较旧应用程序中,我得到了意外的结果
我不希望在调用.valid?
时调用下面的验证,但是会被调用。
a) My Test Model contained `validate :exec_on_create, :on => :create`.
b) In console
001 > t = Test.new(msg: '7 ...')
002 > t.valid?
******* "exec_on_create" was called.
=> true
将:on => :create
更改为before_create :exec_on_create
的效果超出了我的期望……不再称为仅在创建时才调用的验证。
a) My test Model contained `before_create :exec_on_create`.
b) In console
001 > t = Cals2Db::Test.new(msg: '7 ...')
002 > t.valid?
=> true