这些关于属性的表达之间的区别是什么?

时间:2018-03-08 10:34:02

标签: ruby-on-rails

似乎所有这三个都被使用了:

  • self[:prop] = 'value'
  • self.prop = 'value'
  • @prop = 'value'

它们之间的区别是什么?

1 个答案:

答案 0 :(得分:4)

一般而言:

  • self[:prop] = 'value'调用实例方法[]=,传递两个参数:prop'value'

  • self.prop = 'value'调用实例方法prop=,传递一个参数'value'

  • @prop = 'value'将实例变量@prop设置为'value'(无方法调用)。

在Rails中,您可以通过其命名的setter(例如prop=)或[]=更新ActiveRecord属性,而write_attribute又会调用{{3}}。