質問

(:名:パスワード:電子メール)、およびイベントモデル(:名前、:等)とインタレスト・モデル(:名)

この私がユーザーモデルを持っています

それから私は、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(...)を使用することができます。私はないんだけど必ずそれがどのくらい速く、しかします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top