基本上我有3张桌子。忽略语法。我只想表达这个想法。
ModelA:
belongs_to :ModelB
ModelB:
has_many: ModelA
has_and_belongs_to_many :ModelC
ModelC
has_and_belongs_to_many :ModelB
如何获取ModelA中的所有行,其中ModelC的所有行都有flag ='Y'?
我试过了:
ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag = 'Y'")
以及其他方式没有成功。我知道上面的代码没有检查所有的行,但这就是我所拥有的。我更喜欢使用ActiveRecord。
答案 0 :(得分:0)
他们的解决方案可以解决你的问题但不是一个完美的问题
ModelA.all - ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag != 'Y'")