只在Create上验证方法调用,而不是在update上验证



我在模型中有验证方法

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

最新更新