似乎所有这三个都被使用了:
self[:prop] = 'value'
self.prop = 'value'
@prop = 'value'
它们之间的区别是什么?
答案 0 :(得分:4)
一般而言:
self[:prop] = 'value'
调用实例方法[]=
,传递两个参数:prop
和'value'
。
self.prop = 'value'
调用实例方法prop=
,传递一个参数'value'
。
@prop = 'value'
将实例变量@prop
设置为'value'
(无方法调用)。
在Rails中,您可以通过其命名的setter(例如prop=
)或[]=
更新ActiveRecord属性,而write_attribute
又会调用{{3}}。