我的模型“DataFile”有一堆我想从模型外部设置的字段,例如
file = DataFile.new
file.owner = 123
现在,据我所知,我必须在模型中为我想从外部修改的每个字段放置一个“attr_accessor:field”。然而,上面的代码在没有定义任何 attr_accessors 的情况下运行良好,将所有者字段设置为 123。这是为什么呢?
我预计会收到“方法未定义”错误或类似的错误。
由于 Rails 的 ORM 使用 ActiveRecord 模式,因此会为与该表关联的数据库中的每一列自动创建两个方法:列名, and 列名=。由于您的模型继承自 ActiveRecord::Base,因此会“自动”发生这种情况。这些方法是使用 ruby 的元编程工具定义的,并在类创建时动态创建。
有关到底发生了什么的更多信息,我会查看 Rails 源代码。然而,以上内容可能足以让您对正在发生的事情有一个有效的了解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)