Rails模型:如何使属性受保护或私有在模型外不可见?

表格中有一些字段,我不希望在外面可见?

就像created_on,is_first等一样。我想通过在模型中使用回调来设置这些字段的值,但是某些人无法设置它。

防止某些字段上的批量分配的标准方法是attr_protectedattr_accessible

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

在您的情况下,您必须在模型中添加此行:

 attr_protected :created_on, :is_first 

即使您有一个包含这些字段的表单,在新/创建调用中使用它们时也会忽略它们的值。

 def is_new =(is_new) raise 'is_new is immutable!' end