Используйте ActiveRecord, чтобы найти результат 5 вложенных таблиц
-
25-09-2019 - |
Вопрос
У меня есть модель пользователя (: name,: пароль,: электронная почта) и модель событий (: name,: etc) и процентная модель (: имя)
Затем я создал два таблица присоединения -> пользователей Interneests и Eventsinterests; Каждый не содержит первичный ключ и только состоит из только user_id / dient_id и event_id / dient_id соответственно.
Я пытаюсь использовать ActiveErecord, чтобы запросить список всех событий, где проценты. Соответствующие INVERINGS = проценты.
Я использую HAS_MANY и принадлежит отношениям с Вложенный петли плагин
Мои модели выглядят так =>
user.rb.
has_many :users_interests
has_many :interests, :through => :users_interests
Event.rb.
has_many :events_interests
has_many :interests, :through => :events_interests
Интерес
belongs_to :users , :through => :users_interests
belongs_to :events , :through => :events_interests
users_interests.rb.
belongs_to :users
belongs_to :interests
События_interests.rb.
belongs_to :interests
belongs_to :events
Если @ user = user.find (1), как бы я запросил события, которые пользователь будет заинтересован?
Я подошел к этому => @ события. Образен (: все: Условия => Событияinterests.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
чтобы получить удостоверение личности и пройти, чтобы найти () с interest_id IN(...)
этот список тоже. Я не уверен, насколько быстрее это будет, хотя.