Ruby Sequel模型,用于验证创建而不是更新

时间:2014-10-16 07:16:46

标签: ruby sequel

如果update拥有create,我怎么能避免对image进行验证?例如:

我希望在presence validation上设置create字段edit。但是希望在{{1}}中避免使用它,并在没有变化的情况下假设前一个值。

注意:我正在使用Padrino。

3 个答案:

答案 0 :(得分:6)

在续集中,验证通常使用validation_helpers插件在实例级别完成。因此,如果您只想为新对象而不是现有对象验证它,那么您只需使用标准的ruby条件:

plugin :validation_helpers
def validate
  super
  validates_presence :image if new?
end

答案 1 :(得分:0)

你可以这样说:

validates :image, :presence => true, on: :create

这意味着只有在创建时才会进行验证。

答案 2 :(得分:0)

在Rails中,

"验证" Rails中的关键字带有一个允许你这样做的参数:

validates :your_validator, :presence => true, :on => :create

你也可以在那里传递数组:

validates :your_validator, :presence => true, :on => [:create, :update]

在Padrino,

我相信使用datamapper的padrino - DM具有上下文验证。因此,您可以进行上下文验证。

validates :image, :presence => true, :when => [:custom]

然后在保存时,您可以这样做:

post.save(:custom)
# OR
post.valid?(:custom)

上下文:custom可以在不同的地方使用。