Pregunta

Tengo un usuario Modelo (nombre,: contraseña,: e-mail), y el modelo de eventos (: nombre,: etc) y el modelo de interés (: nombre)

A continuación, he creado dos se unen tablas -> UsersInterests y EventsInterests; cada uno que no contenga una clave primaria y sólo compuesto por la user_id / interest_id y event_id / interest_id respectivamente.

Estoy tratando de usar ActiveRecord para consultar una lista de todos los eventos en los que el interest.id de EventsInterests = interest.id de UsersInterests

Estoy usando has_many y belongs_to relaciones con el bucle anidado Plugin

Mis modelos parecen tan =>

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

Si el usuario @ = User.find (1), ¿Cómo puedo consultar los eventos de un usuario estaría interesado?

Se me ocurrió esta => @ Events.find (: todos,: condiciones => EventsInterests.interest_id = UsersInterests.interest_id) ??

pero me sale el error

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

umm..wtf? cualquier ayuda chicos .... He estado en esto por como 4 días

¿Fue útil?

Solución

En primer lugar, hop en la consola y asegúrese de que todo su trabajo de relaciones:

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

Solo para aclarar, a Listas de usuarios a sus intereses, y se desea obtener una lista de los eventos que coincidan con esos intereses?

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

No es particularmente eficiente, pero eficaz y fácil de comprender.

Se podría utilizar User.first.interests_singular_ids para obtener los identificadores y pasar a un hallazgo que () con interest_id IN(...) esa lista, también. No estoy seguro de cuánto más rápido que sería, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top