2

我的模型中有验证方法

def validate
  super    
  if some condition
    errors.add('', 'some text')
  end
end

此方法调用创建和更新。我不想调用更新。我怎样才能做到这一点?

我正在使用 rails2.3.11 和 jruby。

更新:我可以使用这个validate :custom_validation, :on => :create,但是他们如何调用创建和更新?

我也检查了validate_on_create,但我还是不知道什么时候validate打电话?

4

2 回答 2

7

利用

validate :custom_validation, :on => :create

并将您的方法名称从更改validatecustom_validationie

def custom_validation
  super    
  if some condition
    errors.add('', 'some text')
  end
end

并且上述方法只会在创建时调用,而不是在更新时调用

于 2012-09-25T02:27:04.123 回答
0

在运行 Rails 4.2.5.1 的旧应用程序中,使用:on => :create, 对我来说有意想不到的结果

我不希望在我调用时调用我的以下验证,.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 => :createbefore_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
于 2019-09-30T18:09:01.393 回答