2012-12-06 54 views

回答

3

您可以使用attr_readonly,這將允許值要在創建設置,但在更新時忽略。

例子:

class User < ActiveRecord::Base 
    attr_accessible :name 
    attr_readonly :name 
end 


> User.create(name: "lorem") 
> u = User.first 
=> #<User id: 1, name: "lorem"> 
> u.name = "ipsum" 
=> "ipsum" 
> u.save 
=> true 
> User.first.name 
=> "lorem" 
+0

謝謝!我知道必須有一個簡單的方法:) –

0

沒有一個很好的辦法做到這一點,據我所知,您必須編寫自定義過濾器

before_update :prevent_attributes_update 

def prevent_attribute_updates 
    %w(attr1, attr2).each do |a| 
    send("#{attr1}=", send("#{attr1}_was")) unless self.send("#{attr1}_was").blank? 
    end 
end 
相關問題