0
私はそうのような条件で熱心にロードされた関連付けを入れ子にActiveRecordの倍数に照会しようとしている:指定条件
user.books.includes(slot: [room: :school]).where("books.slot.room.school.id = 1")
明らかに、このクエリは、私がしようとしているものを基本的に間違っているが、リーチは特定の学校のuser.booksの関係です。
私のモデル構造は次のとおりです。
class User < ActiveRecord::Base
has_many :books
has_many :slots, through: :books
has_many :rooms, through: :slots
has_many :schools
end
class Book < ActiveRecord::Base
belongs_to :user
belongs_to :slot
end
class Slot < ActiveRecord::Base
has_many :books
belongs_to :room
end
class Room < ActiveRecord::Base
belongs_to :school
has_many :slots
end
class School < ActiveRecord::Base
has_many :users
has_many :rooms
has_many :slots, through: :rooms
has_many :books, through: :slots
end
任意のアイデア?前もって感謝します。
こんにちはKkulikovskisを、が、私は次のエラーが出るように、実際に働いていなかった:PG :: UndefinedTable:ERRORを:テーブルのFROM句のエントリがない...私のために働いたのは次のとおりです:u.books.joins(slot:[room::school])where(schools:{id:1})。あなたには意味がありますか? –
はい、申し訳ありません。私の答えは完全ではありません。なぜなら、複数のテーブルを結合すると、 'where'で直接アクセスすることができるからです。私は私の答えを更新しました – Kkulikovskis