В моем приложении Rails у меня есть 3 модели: пользователь, язык и геймификация. Они связаны через has_many через:
User
has_many :gamifications
has_many :languages, -> { distinct }, through: :gamifications
Language
has_many :gamifications
has_many :users, -> { distinct }, through: :gamifications
Gamification
belongs_to :user
belongs_to :language
У языка есть столбец «имя», а у Gamification есть столбец «очки».
Я пытаюсь написать метод для модели User, который бы возвращал точки от геймификации первого пользователя, которая связана с языком, который я запрашиваю.
Что-то подобное работает:
def points(language)
gamifications.where(language_id: language).first
end
, но я бы действительно хотел запросить language.name, а не language.id. Пока у меня есть
def points(language)
gamifications.where(languages: { name: language }).first
end
, но он вызывает PG :: UndefinedTable: ОШИБКА: отсутствует запись предложения FROM для таблицы "language"
Можете ли вы помочь?