我刚刚学习rails并注意到当我创建一个继承自ActiveRecord :: Base的对象时(即从我迁移的模型中),对象中的实例变量在它们前面没有@符号
这是一个东西,还是我在学习红宝石时误解了一些东西?
提前感谢您的帮助。
答案 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方法进行交互,而这些方法又与实际的实例变量进行交互。
这实际上非常有用,因为它允许您在需要修改类中变量的行为时覆盖它们。