Sql Rails从相关表的所有行都具有特定值的表中选择行
基本上我有三张桌子。忽略语法。我只是想展示一下这个想法Sql Rails从相关表的所有行都具有特定值的表中选择行,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,基本上我有三张桌子。忽略语法。我只是想展示一下这个想法 ModelA: belongs_to :ModelB ModelB: has_many: ModelA has_and_belongs_to_many :ModelC ModelC has_and_belongs_to_many :ModelB 如果ModelC的所有行都有flag='Y',如何从ModelA获取所有行? 我试过: ModelA.joins(:ModelB => :ModelC).
ModelA:
belongs_to :ModelB
ModelB:
has_many: ModelA
has_and_belongs_to_many :ModelC
ModelC
has_and_belongs_to_many :ModelB
如果ModelC的所有行都有flag='Y',如何从ModelA获取所有行?
我试过:
ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag = 'Y'")
还有其他十几种方法都没有成功。我知道上面的代码没有检查所有的行,但这就是我所能做到的。我更喜欢使用ActiveRecord。他们的解决方案可以解决您的问题,但不是完美的解决方案
ModelA.all - ModelA.joins(:ModelB => :ModelC).where("#{ModelC.table_name}.flag != 'Y'")