Pergunta

Eu tenho um modelo de usuário (:nome,:senha,:email) e modelo de evento (:nome,:etc) e modelo de interesse (:nome)

Então criei duas tabelas de junção -> UsersInterests e EventsInterests;cada um não contendo uma chave primária e composto apenas por user_id/interest_id e event_id/interest_id respectivamente.

Estou tentando usar o ActiveRecord para consultar uma lista de todos os eventos onde o interest.id de EventsInterests=interesse.id de UsersInterests

Estou usando relacionamentos has_many e pertence_to com o Plug-in de loop aninhado

Meus modelos são assim =>

usuário.rb

has_many :users_interests
has_many :interests, :through => :users_interests

evento.rb

has_many :events_interests
has_many :interests, :through => :events_interests

interesse.rb

belongs_to :users , :through => :users_interests
belongs_to :events , :through => :events_interests

usuários_interesse.rb

belongs_to :users
belongs_to :interests

eventos_interests.rb

belongs_to :interests
belongs_to :events

Se @user=User.find(1), como eu consultaria os eventos nos quais um usuário estaria interessado?

Eu inventei isso => ​​@events.find (: all ,: condições => eventsinterests.interest_id = usersinterests.interest_id) ??

mas recebo o erro

undefined method `interest_id' for UsersInterests(user_id: integer, interest_id: integer):Class

umm..que merda?qualquer ajuda pessoal....estou nisso há uns 4 dias

Foi útil?

Solução

Primeiro, entre no console e certifique-se de que todos os seus relacionamentos funcionem:

User.first.events
User.first.interests
Events.first.users
Interests.first.users
Interests.first.events
# ... and so

Só para esclarecer, um usuário lista seus interesses e você deseja obter uma lista dos eventos que correspondem a esses interesses?

User.first.interests.collect { |interest| interest.events }.uniq

Não é particularmente eficiente, mas eficaz e fácil de compreender.

Você poderia usar User.first.interests_singular_ids para obter os ids e passá-los para find() com interest_id IN(...) essa lista também.Não tenho certeza de quão mais rápido seria, no entanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top