了解Ruby on Rails ActiveRecord模型访问器

fre*_*oma 2 ruby activerecord model ruby-on-rails attr-accessor

我的模型,"DataFile",有一堆字段,我想从模型外部设置,例如

file = DataFile.new
file.owner = 123

现在,据我所知,我必须在我的模型中放置一个"attr_accessor:field",用于我想从外部修改的每个字段.但是,上面的代码运行正常,没有定义任何attr_accessors,将owner字段设置为123.为什么?

我希望得到一个"方法未定义"错误或类似的东西.

Dre*_*son 11

因为Rails的ORM使用ActiveRecord模式,所以为与该表关联的数据库中的每个列自动创建两个方法:columnnamecolumnname =.由于您的模型继承自ActiveRecord :: Base,这会"自动"发生.这些方法是使用ruby的元编程工具定义的,并且是在创建类时动态创建的.

有关确切内容的更多信息,我将查看Rails源代码.但是,上述内容可能足以让您对正在发生的事情有所了解.