2014-12-06 48 views
0

我有一個表單,它創建一個顯示哪些肌肉羣工作的新練習。這裏是什麼,我想進入DB的例子:Rails:將屬性值添加到has_many:through關聯中的連接表中的幾條新記錄

新運動:名稱=>拉,主要=>回來,二次=> [二頭肌,前臂,胸部]

我應該怎麼設置這起來了嗎?我不想將主要和次要數據存儲在muscle_groups_exercised表中,因爲我有將來的查詢,將根據該練習的主要肌肉組搜索練習。

下面是應用程序,這部分的架構:

create_table "exercises", force: true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

create_table "muscle_groups", force: true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

create_table "muscle_groups_exercised", force: true do |t| 
    t.integer "muscle_group_id" 
    t.integer "exercise_id" 
    t.binary "primary" 
    t.binary "secondary" 
end 

add_index "muscle_groups_exercised", ["exercise_id"], name: "index_muscle_groups_exercised_on_exercise_id", using: :btree 
add_index "muscle_groups_exercised", ["muscle_group_id"], name: "index_muscle_groups_exercised_on_muscle_group_id", using: :btree 

下面是型號:

class Exercise < ActiveRecord::Base 
    has_many :muscle_groups, through: :muscle_groups_exercised 
end 

class MuscleGroup < ActiveRecord::Base 
    has_many :exercises, through: :muscle_groups_exercised 
end 

class MuscleGroupExercised < ActiveRecord::Base 
    belongs_to :exercise 
    belongs_to :muscle_group 
end 

我有一個exercises_controller和muscle_groups_controller。我認爲這段代碼應該存在於exercise_controller和muscle_groups_exercised模型中,但不完全相信如何做到這一點。

回答

1

你在做什麼看起來很正確。我想象一下,即使你稍後要在肌肉羣內搜索鍛鍊,也會想要將肌肉羣應用於鍛鍊。我會把所需的代碼放在exercises_controller.rb之內。

Check out Ryan Bates article and video對HAMBTM複選框的一些幫助如何做到這一點。這不完全是你在做什麼,你將需要爲中學或小學應用額外的價值。

順便說一句,我不會有兩列中學和小學,因爲只有兩個值,只有主要的假設,如果它不是真的,那麼肌肉組是次要的。

0

您有更具體的問題嗎?您的模式似乎適合您的要求。你可能不需要t.binary primary和t.binary secondary - 你可能會忽略它們中的一個來指定該條目是主要的還是次要的。

+0

我不知道我應該如何在控制器和/或模型中編寫代碼,因爲我只對一對多關聯進行過CRUD。我不知道如何爲許多協會做到這一點。有沒有可以指向我的網頁? – HoodieOnRails 2014-12-06 06:46:00

相關問題