我是Rails的新手。我发现下面的两种方法得到了相同的结果,但我无法理解代码。
[ ]
应该是数组的运算符,对吗?为什么我可以通过以下方式使用它:
代码1:
drummer = Drummer.find(1)
drummer[:name]
=>"Jojo Mayer"
代码2:
drummer = Drummer.find(1)
drummer.name
=> "Jojo Mayer"
答案 0 :(得分:3)
没有区别。 ActiveRecord:基本实例方法[]只调用read_attribute,它返回相同的值。
[]方法的目的是允许使用变量传递属性名称,例如:
key = :name
drummer[key]
=>"Jojo Mayer"
答案 1 :(得分:1)
实际上有一个重要的区别。
如果你需要通过覆盖setter来对值进行某种处理:
class Drummer
def name= value
self[:name] = value.capitalize
end
end
然后鼓手[:name]允许你绕过覆盖。