Ruby on rails 布尔值的组合逻辑&;一个activerecord模型中的整数

Ruby 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

假设我有一个名为a
产品的模型<代码>产品
具有
天\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
来说明这种情况?