Question

J'ai un modèle utilisateur (nom,: mot de passe,: e-mail) et le modèle de l'événement (nom,: etc) et le modèle d'intérêt (: nom)

Alors j'ai créé deux tables de jointure -> UsersInterests et EventsInterests; chacun ne contenant pas de clé primaire, et seulement constituée de la user_id / interest_id et event_id / interest_id respectivement.

Je suis en train d'utiliser ActiveRecord pour interroger une liste de tous les événements où l'interest.id de EventsInterests = interest.id de UsersInterests

J'utilise has_many et belongs_to relations avec le boucle Plugin Nested

Mes modèles ressemblent donc =>

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 l'utilisateur @ = User.find (1), comment pourrais-je interroger les événements seraient intéressés un utilisateur?

Je suis venu avec cette => @ Events.find (: all,: conditions => EventsInterests.interest_id = UsersInterests.interest_id) ??

mais je reçois l'erreur

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

umm..wtf? les gars d'aide .... J'ai été dans ce domaine depuis comme 4 jours

Était-ce utile?

La solution

Tout d'abord, hop dans la console et assurez-vous que toutes vos relations au travail:

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

Juste pour clarifier, une liste utilisateur ses intérêts, et que vous voulez obtenir une liste des événements correspondant à ces intérêts?

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

Pas particulièrement efficace, mais efficace et facile à comprendre.

Vous pouvez utiliser User.first.interests_singular_ids pour obtenir les cartes d'identité et passer à une découverte que () avec interest_id IN(...) cette liste, aussi. Je ne sais pas combien il serait plus rapide, cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top