用户购买的范围记录

时间:2018-03-24 12:04:13

标签: ruby-on-rails ruby activerecord scope associations

这是我的设置:

  • 用户有很多购物
  • 包有很多购买
  • 包有很多食谱

我想选择用户使用Recipe课程中的范围购买的所有食谱。这就是我现在所拥有的:

scope :purchased, lambda { |user| includes(pack: :purchases).where(packs: { purchases: { user: user } }) }

由于某些原因,当我致电Recipe.purchased(current_user)时,我会收到所有Recipe条记录。

我对范围做错了什么?

1 个答案:

答案 0 :(得分:4)

这可以在Rails中轻松完成。您只需将has_many:through选项一起使用,如下所示:

class User < ApplicationRecord
  has_many :purchases
  has_many :packs, through: :purchases
  has_many :recipes, through: :packs
end

user = User.first
user.recipes # returns all user's recipes