【发布时间】:2013-08-29 06:41:56
【问题描述】:
在我的项目中,我有一个具有四个属性的模型:名称、描述、内容和完成。
我想在保存之前检查所有属性,除了完成是否为空白。如果不为空,则设置完成为 1,否则为 0。
我使用 ActiveRecord 和 Mysql,所以它也会有 id、created_at 和 updated_at 列。
我写了一个这样的 before_save 回调:
def check_completed
if self.attributes.except("id", "created_at", "updated_at").all? {|k, v| v.present?}
self.completed = 1
else
self.completed = 0
end
end
它有效,但看起来很难看。我想删除 except 函数调用。
有没有更好的方法来做到这一点?
【问题讨论】:
-
相信我,还有很多丑陋的代码块。这个不错。 :)
标签: ruby-on-rails activerecord ruby-on-rails-3.2