使用self.attribute_changed在回调添加条件方面有什么不同吗?或attribute_changed?
class PlayEvent < ActiveRecord::Base
...
after_save :update_next_event_at!, if: 'self.event_at_changed?'
after_save :update_next_event_at!, if: 'event_at_changed?'
...
end
哪一个更喜欢使用?
答案 0 :(得分:1)
没有区别,self.
不是必需的。
您需要的唯一时间self.
正在转让。如果您有模型属性comment
和类似...
def update_comment
comment = "this is the new comment"
end
它可能不是您所期望的,因为在这种情况下,赋值会创建一个变量comment
,该变量是方法的本地变量。 Rubocop将此识别为无用的赋值,因为comment
变量随后不会在任何地方使用。
...然而
def update_comment
self.comment = "this is the new comment"
end
将正确更改记录属性。