我在模型中有验证方法
def validate
super
if some condition
errors.add('', 'some text')
end
end
此方法调用Create和Update。我不想打电话给Update。我该怎么做?
我使用的是铁轨2311和jruby。
更新:我可以使用这个validate :custom_validation, :on => :create
,但他们是如何调用创建和更新的??
我也检查了validate_on_create
,但当这个validate
调用时,我仍然不清楚?
使用
validate :custom_validation, :on => :create
并将方法名称从validate
更改为custom_validation
,即
def custom_validation
super
if some condition
errors.add('', 'some text')
end
end
并且上述方法将仅在创建时调用,而不在更新时调用
对我来说,使用: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