为什么rails中的实例变量没有@符号?

时间:2012-03-09 08:26:12

标签: ruby-on-rails

我刚刚学习rails并注意到当我创建一个继承自ActiveRecord :: Base的对象时(即从我迁移的模型中),对象中的实例变量在它们前面没有@符号

这是一个东西,还是我在学习红宝石时误解了一些东西?

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

Rails不使用单个实例变量来存储字段数据。相反,它使某些方法可用于设置正确的变量。它有助于Rails在使用查找时更好地填充模型,并允许其他方法改进动态Rails的方式。

答案 1 :(得分:0)

模型的列不是stricto sensu实例变量。

你可以访问他们的getter / setter,但它们本质上是不同的:它们应该被保留。

答案 2 :(得分:0)

Rails为所有模型属性定义了getter / setter。

Getter / setter可以使用attr_accessor函数声明。

class Foo
  attr_accessor :bar

  def do_something
     self.bar=2
     @bar=2 # does the same as above
  end
end

答案 3 :(得分:0)

当访问对象的“实例变量”时,实际上是与rails定义的getter / setter方法进行交互,而这些方法又与实际的实例变量进行交互。

这实际上非常有用,因为它允许您在需要修改类中变量的行为时覆盖它们。