2014-06-25 42 views
1

attr_accessible是否创建getter和setter?attr_accessible是否创建getters和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 

通过以上操作,可以批量分配不会保存到数据库的虚拟属性。正确?

+0

你是对的。 – colinm

回答

2

attr_accessible不会创建存取器。

Activerecord自动为数据库列生成访问器。 attr_accessibleattr_protected只是控制它们是否会从诸如update_attributes等方法中调用(并且可以与任何存取方法一起使用,而不仅限于由数据库列支持的方法)

0

attr_accessible创建获取者和设置者。

attr_accessible通常用于具有相应表格的模型,而attr_accessor用于不具有相应数据库表格的模型。

+0

好吧,我一直看到这个答案,但这不是我的问题的答案。你是说,不,attr_accessible不会创建getters和setters? –

+1

@EricFrancis,从我的观点和我如何以不同方式使用它们做出了更深入的扩展! – Acacia

+0

感谢您的编辑。那么attr_accessible为数据库中的列创建getter和setter? –