我有一个带有完成的布尔列的模型,我想覆盖它,所以我可以添加一些条件代码。
我以前从未覆盖过ActiveRecord属性,想知道下面的方法是不是很好用?
class Article < ActiveRecord::Base
def completed=(b)
write_attribute(:completed, b)
# IF b is true then do something
end
end
答案 0 :(得分:3)
你的方法很好。您建议的方法是ActiveRecord documentation中描述的方法(向下滚动到标题覆盖默认访问者)
我要补充的一点是,根据您的具体情况,您可以在使用before_save回调作为替代方案后实现目标。