1

基本上我有3张桌子。忽略语法。我只是想展示这个想法。

ModelA:
    belongs_to :ModelB

ModelB:
    has_many: ModelA
    has_and_belongs_to_many :ModelC

ModelC
    has_and_belongs_to_many :ModelB

如何从 ModelA 中获取 ModelC 的所有行都有标志 = 'Y' 的所有行?
我试过了:

ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag = 'Y'")

和其他十几种方法都没有成功。我知道上面的代码不会检查所有行,但就我所知。我更喜欢使用 ActiveRecord。

4

1 回答 1

0

他们的解决方案可以解决您的问题,但它不是一个完美的解决方案

ModelA.all - ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag != 'Y'")
于 2012-11-02T13:37:35.260 回答