4

在加载数据列表时,Rails 3.1 (RC4) 和作用域批量分配如何期望我们使用 seed.rb。

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

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

它创建了 100 多个城市。这不再起作用了,因为 City 模型有一个 scoped mass assignment :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

对此有什么想法吗?

4

1 回答 1

12

您可以执行以下操作:

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

这完全覆盖了批量分配保护 - 因此请确保仅在种子中使用它。

于 2011-11-08T13:08:33.693 回答