Как заполнить приложение Rails 3.1 с массовым назначением - PullRequest
4 голосов
/ 22 июня 2011

Как Rails 3.1 (RC4) и массовое присвоение ожидают от нас работы с seed.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 Ответ

12 голосов
/ 08 ноября 2011

Вы можете сделать следующее:

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

Это полностью отменяет защиту массового назначения - поэтому обязательно используйте ее, скажем, в семенах.

...