2013-04-17 46 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 

这将阻止任何人修改的值。

相关问题