2012-05-19 22 views
4

創建種子數據時,我無法真正找到繞過attr_accessible的乾淨方式。我希望能夠毫無問題地使用批量分配,因爲我知道這個種子文件是完全安全的。繞過seed.rb中的attr_accessible

有沒有一種乾淨的方法來強制Rails 3接受這些?

+0

http://stackoverflow.com/questions/4838716/how-to-avoid-the-validation-callbacks-and-attr-accessible-effects-during-the – tybro0103

+0

我」已經看到了它,我想我也嘗試過它。我無法讓它在Rails 3中工作。 – Spyros

回答

5
#in model 
attr_accessible :name, :role,.... :as => :seed 

#in seed.rb 
model.assign_attributes({name: "Putin", role: "president"....},:as => :seed) 
model.save 
8

這裏有一個快速的黑客(感謝邁克),把這個在您的seeds.rb的頂部:

# Dodge the mass assignment 
User.send(:attr_accessible, :username) 
User.send(:attr_accessible, :admin) 

現在您可以輕鬆調用該不會搞亂你的模型(使用:作爲=>:種子):

@user = User.find_or_create_by_username(:username => 'ryanonrails', :admin => true) 
+0

當使用find_or_create_by時,「:as =>:seed」不起作用! –