ActiveRecordの使用は5つのネストした表の検索結果を検索します
-
25-09-2019 - |
質問
この私がユーザーモデルを持っています
それから私は、2つのテーブルを結合し作成 - > UsersInterestsとEventsInterestsを。各主キーを含むのみUSER_ID / interest_idとのevent_id / interest_idそれぞれ
からなるありません私は、リストを照会するためのActiveRecordを使用しようとしているすべてのイベントどこEventsInterests = interest.id UsersInterestsののinterest.id
私はhas_manyのを使用してネステッド・ループプラグインする
との関係をbelongs_toのよ私のモデルがどのように見えるので、=>
user.rb
has_many :users_interests
has_many :interests, :through => :users_interests
event.rb
has_many :events_interests
has_many :interests, :through => :events_interests
interest.rb
belongs_to :users , :through => :users_interests
belongs_to :events , :through => :events_interests
users_interests.rb
belongs_to :users
belongs_to :interests
events_interests.rb
belongs_to :interests
belongs_to :events
もし、@ユーザー= User.find(1)、私はユーザーが興味があるイベントを照会する方法を?
私は>この=を思い付い @ events.find(:すべて:条件=> EventsInterests.interest_id = UsersInterests.interest_id)??
が、私はエラーを取得
undefined method `interest_id' for UsersInterests(user_id: integer, interest_id: integer):Class
umm..wtf?私は4のような日
のためにこれをしてきたすべてのヘルプみんな....解決
まず、コンソールにホップとあなたの関係の仕事の確認すべて行います:
User.first.events
User.first.interests
Events.first.users
Interests.first.users
Interests.first.events
# ... and so
だけでは、ユーザーリスト、彼の興味を明確にするために、あなたはそれらの利益に一致するイベントのリストを取得したい?
User.first.interests.collect { |interest| interest.events }.uniq
効率的な、しかし、効果的かつ理解に簡単に特定されていません。
あなたも、User.first.interests_singular_ids
そのリストで)のIDを取得し、(見つけるために、それを渡すためにinterest_id IN(...)
を使用することができます。私はないんだけど必ずそれがどのくらい速く、しかします。