2015-06-22 2 views
1

У меня есть две связанные моделиПосева гнездовых моделей, дубликат ключа ошибки

тренировки:

has_many :exercises, dependent: :destroy 
accepts_nested_attributes_for :exercises, 
           :reject_if => :all_blank, 
           :allow_destroy => true 

Упражнение:

belongs_to :workout 

Контроллер тренировки имеет следующую Params:

params.require(:workout).permit(:name, exercises_attributes: [:id,:name,:reps,:sets,:weight]) 

И вот мой файл seed.rb

5.times do |i| 
    Workout.create(name: i, exercises_attributes: [ 
               name: 'Bench Press', 
               reps: 5, 
               sets: 5, 
               weight: 200.0], 
         exercises_attributes: [ 
               name: 'Squat', 
               reps: 5, 
               sets: 5, 
               weight: 100.0]) 
end 

Когда я запускаю грабли БД: обнуление я получаю следующее сообщение об ошибке:

~/db/seeds.rb:14: warning: duplicated key at line 19 ignored: :exercises_attributes 

Результатом является приседания упражнение добавляется и жим упражнение игнорируется. Любая идея, как я могу решить это, чтобы оба были созданы?

ответ

0

Вы получаете дублируемую ключевую ошибку, потому что вы указываете ее дважды в своем вызове Workout.create.

Постарайся только отправка его один раз, но с массивом хэшей, так что вы подходите оба упражнения в одном массиве:

5.times do |i| 
    Workout.create(name: i, exercises_attributes: [ 
    { 
     name: 'Bench Press', 
     reps: 5, 
     sets: 5, 
     weight: 200.0 
    }, 
    { 
     name: 'Squat', 
     reps: 5, 
     sets: 5, 
     weight: 100.0 
    }] 
) 
end 
+0

Спасибо так много, это установил ее! – userFriendly

Смежные вопросы