2011-02-16 30 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