我有两个模型:meal_plans
和dinners
。每个meal_plan
将有一周的dinners
,每个晚餐可能会有几个meal_plans
。
我想知道在用餐计划中保存7个晚餐ID的最佳方法是什么。起初,我只是想用一个助手将一系列晚餐ID保存到用餐计划的参数中:
def create_week_of_meals(week)
ids = []
week.each {|dinner| ids.push(dinner.id)}
return ids
end
具有强参数:
params.require(:meal_plan).permit(:user_id, :meals)
这可以正常工作,但它给我留下了一系列的meal_id,我必须将其返回到一个数组中,然后为这些晚宴id中的每一个查询Dinners
。有更好的方法吗?我看到了很多对railsaccepts_nested_attributes_for
的引用,但据我所知,这些引用主要涉及将另一个模型的一些属性保存到当前记录中,而我希望保存对几个模型的引用
我熟悉has_many_through关系,但为每个用餐计划创建一个单独的模型和七个新记录,只是为了在记录中附加一些dinner_ids
,似乎需要大量开销。
class Dinner < ActiveRecord::Base
has_many :meal_plan_placements
has_many :meal_plans, through: :meal_plan_placements
end
class MealPlan < ActiveRecord::Base
has_many :meal_plan_placements
has_many :dinners, through: :meal_plan_placements
end
class MealPlanPlacement < ActiveRecord::Base
belongs_to :dinner
belongs_to :meal_plan
end
这应该有效,但我还没有在本地运行它,所以你应该试试看。你也可以阅读更多关于through
选项的信息。