2013-04-17 47 views
0

在我的Rails 3項目中,我有一個表格,我只想參考應用程序:我從來沒有希望任何人有能力在應用程序內更改此數據。這是我到目前爲止有:如何防止ActiveRecord對象的字段被更改?

class Foo < ActiveRecord::Base 
    attr_readonly :name, :description 

    has_many :bars 

    def readonly? 
    return true 
    end 
    ... 
end 

雖然這可以防止保存記錄或使用update_attributes,我想鎖定下來,甚至更多:是有我,以防止裝載記錄的分配的方式, LA:

f = Foo.find(1) 
f.name = 'New Name' 
SomeError: You cannot change properties of this object 
+0

爲什麼它是一個活動的記錄對象? – apneadiving

+0

由於對象的原始配置位於數據庫中。很長的故事。 – abeger

+0

爲什麼你想停止改變屬性?如果他們無法挽救他們,爲什麼這很重要? –

回答

0

您可以創建自定義的setter的屬性:

def name=(val) 
    raise RuntimeError, 'You cannot change properties of this object' 
end 

這將阻止任何人修改的值。

相關問題