在模型回调条件中使用self.attribute和attribute之间有区别吗?

时间:2017-07-27 12:40:35

标签: ruby-on-rails-4 activerecord

使用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

哪一个更喜欢使用?

1 个答案:

答案 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

将正确更改记录属性。