Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Activerecord 在活动记录中设置多对多关系_Activerecord_Ruby On Rails 6 - Fatal编程技术网

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

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,

我有两种模式:用餐计划和晚餐。每顿饭都有一周的晚餐,每顿饭都可能有几顿饭

我想知道最好的办法是把7个晚餐ID保存到一个用餐计划中。最初,我只是想用助手将一组晚餐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是否是解决类似问题的正确方法,而不是如何设置一个,但我感谢你的回答,我想你会说这是解决我面临的特殊情况的方法?是的。我会尽可能多地遵循惯例,直到你们清楚地理解为什么要背离惯例。我总是试着问自己这样一个问题:我是在存储信息,还是在存储数据。那两个不一样。