Activerecord 在活动记录中设置多对多关系
我有两种模式:用餐计划和晚餐。每顿饭都有一周的晚餐,每顿饭都可能有几顿饭 我想知道最好的办法是把7个晚餐ID保存到一个用餐计划中。最初,我只是想用助手将一组晚餐ID保存到用餐计划的参数中:Activerecord 在活动记录中设置多对多关系,activerecord,ruby-on-rails-6,Activerecord,Ruby On Rails 6,我有两种模式:用餐计划和晚餐。每顿饭都有一周的晚餐,每顿饭都可能有几顿饭 我想知道最好的办法是把7个晚餐ID保存到一个用餐计划中。最初,我只是想用助手将一组晚餐ID保存到用餐计划的参数中: def create_week_of_meals(week) ids = [] week.each {|dinner| ids.push(dinner.id)} return ids end 使用强参数: 参数要求:膳食计划。许可:用户id,
def create_week_of_meals(week)
ids = []
week.each {|dinner| ids.push(dinner.id)}
return ids
end
使用强参数:
参数要求:膳食计划。许可:用户id,:膳食
这可以正常工作,但它留给我一串用餐ID,我必须将其转换回一个数组,然后为每个用餐ID查询晚餐。有更好的方法吗?我已经看到了很多对rails的引用,这些引用都接受嵌套的属性,但是从我所知道的来看,它们主要处理的是将另一个模型中的一些属性保存到当前记录中,而我希望保存对多个模型的引用。
我很熟悉has_许多关系,但是为每个用餐计划创建一个单独的模型和七个新记录,只是在一个记录上附加一些晚餐ID,这似乎需要很大的开销
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
这应该是可行的,但我还没有在本地运行它,所以你应该好好玩玩它。你也可以。嘿,谢谢你的回答,我的问题更多的是关于has\u many through是否是解决类似问题的正确方法,而不是如何设置一个,但我感谢你的回答,我想你会说这是解决我面临的特殊情况的方法?是的。我会尽可能多地遵循惯例,直到你们清楚地理解为什么要背离惯例。我总是试着问自己这样一个问题:我是在存储信息,还是在存储数据。那两个不一样。