所以我想知道我们是否可以有一个条件 allow_nil 选项来验证 Rails 模型。
我想要做的是能够根据某些逻辑(其他一些属性)allow_nil
所以我有一个可以保存为草稿的产品模型。当保存为草稿时,价格可以为零,但当不是草稿时,保存的价格应该是数字。我怎样才能做到这一点。以下似乎不起作用。它适用于草稿案例,但即使状态不是草稿也允许为零。
class Product<ActiveRecord::Base
attr_accessible :status, price
validates_numericality_of :price, allow_nil: :draft?
def draft?
self.status == "draft"
end
end
查看rails docs我看起来没有将方法传递给allow_nil的选项?
一种可能的解决方案是对两种情况进行单独验证
with_options :unless => :draft? do |normal|
normal.validates_numericality_of :price
end
with_options :if => :draft? do |draft|
draft.validates_numericality_of :price, allow_nil: true
end
还有其他方法可以使它正常工作吗?
谢谢