我有一个表格可以创建一个新的练习,显示哪些肌肉群在工作。以下是我想要输入数据库的示例:
新练习:name => Pull-up,primary => back,secondary => [二头肌,前臂,胸部]
我该如何设置?我不想将主要和次要数据存储在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
我有一个exercise_controller和muscle_groups_controller。我认为这段代码应该存在于exercise_controller和muscle_groups_exercised模型中,但不完全确定如何执行此操作。
答案 0 :(得分:1)
你在做什么看起来对我来说。我想,即使你将在肌肉群内寻找以后的运动,也会想要将肌肉群应用于运动。我会将所需的代码放在exercises_controller.rb
。
Check out Ryan Bates article and video在HAMBTM复选框上获取有关如何执行此操作的一些帮助。这不完全是您正在做的事情,您需要为辅助或主要应用额外的值。
顺便说一下,我不会有两个列用于辅助和初级,因为只有两个值,只有主要的一个并假设它不是真的,那么肌肉群是次要的。答案 1 :(得分:0)
你有更具体的问题吗?您的架构似乎适合您的要求。您可能不需要t.binary primary和t.binary secondary - 您可能只需要其中一个来指定该条目是主要还是次要。