假设我有一个名为Product
的模型。 Product
天数为days_lifetime:integer
(初始化后可在1小时,2小时,3小时后到期)。但有时Product
具有无限的生命周期(它可以存储很长时间)。所以,我需要添加另一个变量,如unlimited_lifetime:boolean
现在,我有两种方法可以了解Product
模型的生命周期:
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?'
但这个解决方案很复杂且硬编码。是否有任何软件模式或宝石来简化这种方法?
答案 0 :(得分:2)
您可以使用现有的days_lifetime
列,例如将-1
放在具有无限生命期的产品上(我假设0
用于过期产品)。