2015-06-22 29 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