attr_accessible是否会创建getter和setter?
我一直在读,attr_accessible和attr_accessor是不同的 . 但在我的代码库中,我一直看到人们写道:
attr_accessor :email
attr_accessible :email
这看起来很奇怪 . attr_accessible不会创建getter和setter吗?
对于rails 4,我知道使用强参数,所以最好只使用attr_accessor吗?
编辑:我已经多次发布了这个帖子:
attr_accessor生成getter和setter,而attr_accessible允许传递质量赋值中的值 .
我的问题更多的是寻找“是”或“否” . 如果答案为否,rails会自动为数据库中的列创建getter和setter吗?
编辑:所以我想我现在就明白了 .
attr_accessor :email
attr_accessible :email
执行上述操作将允许您批量分配不会保存到数据库的虚拟属性 . 正确?
2 回答
attr_accessible
不会创建访问者 .Activerecord自动为数据库列生成访问器 .
attr_accessible
和attr_protected
只是控制是否从update_attributes
等方法调用它们(并且可以与任何访问器方法一起使用,而不仅仅是数据库列支持的方法)YES
attr_accessible
创建getter和setter .attr_accessible
通常用于具有相应表的模型,而attr_accessor
用于没有相应数据库表的模型 .