mysql允许0000-00-00字段的值为date,但是ActiveRecordDate值的赋值与该字符串视为nil
我有一个遗留应用程序,它依赖于精确的字段内容来实现“从不”的概念,因此如果客户的最后付款日期是0000-00-00,它会承认“从不”付款。
是否有方法可以覆盖此字段的ActiveRecord(正确)验证,并将此值写入数据库,而不会弄脏我的手?
谢谢你的洞察力。

最佳答案

您可能会发现这稍微容易一点,它应该在不为模型中的每个属性执行方法的情况下获得相同的结果

class CustomerInfo < BillingDatabase
  belongs_to :customer

  def lastpaid
    value = read_attribute(:lastpaid)
    value.blank? ? "0000-00-00" : value
  end
end

当然,您可以重构代码以调用read_属性两次,并将lastpayed方法作为一行代码执行。这真的是一个风格/分钟性能差异的问题。
def lastpaid
  read_attribute(:lastpaid).blank? "0000-00-00" : read_attribute(:lastpaid)
end

10-06 01:13