我正在试图找出适合我的模型的ActiveRecord关联。我正在为一个网站建立一个餐饮定制和订购系统,用户可以从多个项目中选择并构建一个用餐并重复此多个单个订单的时间。
我目前的设置如下:
用户
has_many :orders, :dependent => :destroy
has_many :meals, through: :orders
顺序
belongs_to :user
has_and_belongs_to_many :meals
膳食
has_and_belongs_to_many :orders
has_and_belongs_to_many :items
物品
has_and_belongs_to_many :meals
我想我的问题可能分为两部分:
1)我当前的设置是否允许将多个项目分配给一餐,并且可能分配给其他餐点。
2)我可以访问用户以前的餐点,以便在下新订单时提供快捷方式。
第一次提问者提前感谢一大堆!
答案 0 :(得分:0)
对于您的第一个问题,是的,您已经在用餐和项目之间设置了多对多关系(假设您也有正确命名的数据库列)。
对于你的第二个问题,你可能不得不为它做一个自定义查询,因为我不确定是否设置了活动记录来执行你要求它做的多层查询(即从所有人那里得到所有的饭菜)给定用户的订单)。像
这样的东西 past_meals = Set.new
users.orders.each {|o| past_meals += o.meals}
肯定会奏效,但如果你需要它可以提高效率。
但是,即使has_many_and_belongs_to
对您正在执行的操作有效,也不建议使用它。社区更倾向于使连接表与之建立has_many_through关系。
你绝不必这样做,但是大多数人都会建议它,它可以为你节省一些工作。