【发布时间】:2012-02-11 17:40:24
【问题描述】:
我有一个具有多个日期属性的模型。我希望能够将值设置和获取为字符串。我像这样过度使用了其中一种方法(bill_date):
def bill_date_human
date = self.bill_date || Date.today
date.strftime('%b %d, %Y')
end
def bill_date_human=(date_string)
self.bill_date = Date.strptime(date_string, '%b %d, %Y')
end
这非常适合我的需求,但我想对其他几个日期属性做同样的事情......我将如何利用缺少的方法以便可以像这样设置/获取任何日期属性?
【问题讨论】:
-
method_missing是你应该采取的最后一根稻草。实际上,定义方法更简洁,可以带来更好的代码设计,清晰的关注点分离,更容易理解,也更快。所以如果你可以定义你的方法,你应该总是这样做。 -
从 KL-7 了解到,有比 method_missing 更好的方法,但考虑到我有 4 个不同的日期属性用于此模型,手动定义每个属性不是解决方案。干燥
-
嗯,KL-7的方法其实是这里的首选。因为他提出的正是我的意思:定义方法。
标签: ruby-on-rails activerecord overriding method-missing dynamic-attributes