Rails模型:如何使属性受保护或私有在模型外不可见?
表格中有一些字段,我不希望在外面可见?
就像created_on,is_first等一样。我想通过在模型中使用回调来设置这些字段的值,但是某些人无法设置它。
防止某些字段上的批量分配的标准方法是attr_protected
和attr_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