2011-02-16 33 views
3

attr_protected可让您将特定列标记为受保护,而attr_accessible则可让您将除给定集之外的所有列标记为受保护。 attr_readonly可让您将特定列标记为只读。是否有一个反例,可以让您将除给定集以外的所有列标记为只读?是否有attr_readonly的白名单反转?

回答

1

也许你是在attr_accessible之后,它指定了“可分配的”列(如在中,它们可以被传递到createupdate_attributes)。实际上这意味着它们被保护而不被写入。

要设置该属性:

@user.admin = true 
@user.save 
+0

不,我正在寻找一种方式说“这模型中有一些重要的东西,我希望它成为所有列的默认值,不可能搞砸我的控制器代码,或者以覆盖它们的方式在控制台中乱搞。“ – XZVASFD 2011-02-17 00:39:29

0

这是一个黑客攻击的一位,但我发现这工作:

after_initialize do 
    mutable_attributes = ["status", "updated_at"] 
    self.class.attr_readonly *(self.attributes.keys - mutable_attributes) 
end