4

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

これについて何か考えはありますか?

4

1 に答える 1

12

次のことができます。

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

これは一括割り当て保護を完全にオーバーライドします。そのため、これはシードでのみ使用してください。

于 2011-11-08T13:08:33.693 に答える