创建一个使用其关联范围的范围

时间:2016-03-11 10:15:46

标签: ruby-on-rails ruby-on-rails-4 activerecord

我想知道如何制作一个使用其关联范围的范围。让我给你举个例子。 (我希望你没有发现它是人为的)

我有一个模型WifeHusband。丈夫的范围基于他的几个属性,过滤good丈夫。

我如何在Wife上构建一个范围来过滤所有拥有good丈夫的妻子?

class Wife
    #Sorry for how that sounds
    belongs_to :husband

    scope :with_good_husband, -> { ???? }
end

class Husband
    scope :good, -> { ...whatever... }
end

1 个答案:

答案 0 :(得分:0)

通常情况下,我会使用两个查询来从连接中释放范围(由于某些方法中出现一些关联魔法,以后很难操作):

scope :with_good_husband, -> { where(husband_id: Husband.good.pluck(:id)) }