1

基本的に私は3つのテーブルを持っています。構文を無視します。アイデアを示したかっただけです。

ModelA:
    belongs_to :ModelB

ModelB:
    has_many: ModelA
    has_and_belongs_to_many :ModelC

ModelC
    has_and_belongs_to_many :ModelB

ModelC のすべての行にフラグ = 'Y' がある ModelA からすべての行を取得するにはどうすればよいですか?
私はもう試した:

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 に答える