Rails模型validation条件allow_nil?
所以我想知道我们是否可以在rails模型上使用条件allow_nil选项进行validation。
我想要做的是能够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?
一种可能的解决方案是对两种情况进行单独的validation
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
任何其他方法来使这个工作?
谢谢
您可以使用if
和unless
执行以下操作
class Product
有了上述内容,您将设置2个validation,一个适用于draft? == true
draft? == true
,哪个会允许nils,哪个会选择draft? == false
draft? == false
,不允许nils
- Rails,activerecord:self vs self.attribute
- Rails 3和Rspec:计数器缓存列在预期1时更新为2
- ActiveRecord包含
- ActiveRecord :: Enum – PG :: InvalidTextRepresentation:ERROR:整数的输入语法无效:
- 当我尝试做rake db:migrate时,我收到一个错误:ActiveRecord :: NODatabaseError角色“ubuntu”不存在
- 在Rails 3中查找_or_create_by并更新以创建记录
- 清洁方式按指定的顺序通过id查找ActiveRecord对象
- Rails:用户如何将数据输入到Active Record Query中?
- ActiveRecord :: Relation对象如何调用类方法