如何使用作用域质量分配来种子Rails 3.1应用程序

时间:2011-06-22 02:21:48

标签: ruby-on-rails-3 ruby-on-rails-3.1 mass-assignment scoped-mass-assigment

Rails 3.1(RC4)和作用域质量分配如何在加载数据列表时使用seeds.rb。

例如。我通常有类似的东西:

City.create([
  { :name => 'Chicago' }, 
  { :name => 'Copenhagen' }, 
  ...
]) 

创造了100多个城市。由于City模型具有范围的质量分配:as => :admin,因此不再起作用。

据我所知,.create()方法不允许我们投入:as => :admin。 只有.new().update_attributes()允许我们使用:as => :admin执行此操作。

所以做(像下面这样的)很麻烦(特别是对于100多条记录):

city1 = City.new({ :name => 'Chicago' }, :as => :admin)
city1.save
city2 = City.new({ :name => 'Copenhagen' }, :as => :admin)
city2.save

对此有何想法?

1 个答案:

答案 0 :(得分:12)

您可以执行以下操作:

City.create([
  { :name => 'Chicago' }, 
  { :name => 'Copenhagen' }, 
  ...
], :without_protection => true) 

这完全取代了质量分配保护 - 所以一定要在种子中使用它。