Ruby on rails 布尔值的组合逻辑&;一个activerecord模型中的整数
假设我有一个名为aRuby on rails 布尔值的组合逻辑&;一个activerecord模型中的整数,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,假设我有一个名为a产品的模型产品具有天\u生存期:整数天(可在初始化后1、2、3等天内过期)。但有时产品的寿命是无限的(它可以无限长时间存储)。因此,我需要添加另一个变量,如unlimited\u life:boolean 现在我有两种方法来理解产品模型的生命周期: class Product < AR::Base def lifetime unlimited_lifetime? ? 100000 : days_lifetime # too big integer end
产品的模型<代码>产品
具有天\u生存期:整数
天(可在初始化后1、2、3等天内过期)。但有时产品
的寿命是无限的(它可以无限长时间存储)。因此,我需要添加另一个变量,如unlimited\u life:boolean
现在我有两种方法来理解产品
模型的生命周期:
class Product < AR::Base
def lifetime
unlimited_lifetime? ? 100000 : days_lifetime # too big integer
end
validates :unlimited_lifetime, absence: true, if: 'days_lifetime.present?'
validates :unlimited_lifetime, presence: true, if: 'days_lifetime.blank?'
validates :days_lifetime, absence: true, if: 'unlimited_lifetime.present?'
validatees :days_lifetime, presence: true, if: 'unlimited_lifetime.blank?'
类产品
但是这个解决方案很复杂,而且是硬编码的。是否有任何软件模式或gem可以简化此方法?您可以使用现有的
天数(寿命
列),并将-1
作为具有无限寿命的产品的示例(我假设0
用于过期产品)。为什么不使用0
或-1
来说明这种情况?