У меня есть три модели, которые необходимо объединить (есть 4 модели в игре, но мне нужно присоединиться только к трем из них). 4 модели - это пользователь, ключевое слово, вопрос, ассоциация..Соединения с тремя моделями
Эти отношения в моделях
- Пользователь имеет много ключевых слов через ассоциации
- Ключевое слово имеет много пользователей через ассоциации
- Ключевое слово имеет много вопросов
- Вопросы относятся к ключевому слову
Модели -
class User < ActiveRecord::Base
has_many :associations, dependent: :destroy
has_many :keywords, :through => :associations
class Keyword < ActiveRecord::Base
has_many :associations, dependent: :destroy
has_many :users, :through => :associations
has_many :questions, dependent: :destroy
class Association < ActiveRecord::Base
belongs_to :keyword
belongs_to :user
class Question < ActiveRecord::Base
belongs_to :keyword
Теперь мне нужно получить все вопросы по ключевым словам для конкретного пользователя (например, user_id = 2) с использованием .joins.
Любая идея, как я могу достичь этого.
Это дает мне ошибку - «Ассоциация с именем« пользователь »не была найдена в ключевом слове, возможно, вы ее написали?» – amey1908
На самом деле это сработало хорошо, за исключением того, что мне нужны детали из обеих вопросов и таблицы ключевых слов. Подробности о вопросах получаются в порядке, но данные ключевых слов не отображаются. Я также попытался добавить .includes (: keyword) безрезультатно. Любые предложения по этому поводу? Какую же цель выполняют квадратные скобки вокруг пользователя? – amey1908
Я использовал ваш код, так как мне нужны подробности о вопросе. Также я добавил к нему выбор, чтобы выбрать поля из таблицы ключевых слов. «Queryion.joins (ключевое слово: [: users]). Select (« keywords.keyword, questions. * »). Where (" users.id = @ user.id) ' – amey1908