这是我的设置:
我想选择用户使用Recipe
课程中的范围购买的所有食谱。这就是我现在所拥有的:
scope :purchased, lambda { |user| includes(pack: :purchases).where(packs: { purchases: { user: user } }) }
由于某些原因,当我致电Recipe.purchased(current_user)
时,我会收到所有Recipe
条记录。
我对范围做错了什么?
答案 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