在活动记录中设置多对多关系



我有两个模型:meal_plansdinners。每个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选项的信息。

相关内容

  • 没有找到相关文章

最新更新