Сегодня я ношу худую, поэтому может быть, я спрашиваю что-то совершенно очевидное.
У меня есть две модели: Issue
и Language
. У проблемы есть язык, а у языка много проблем.
class Language < ApplicationRecord
has_many :issues
end
class Issue < ApplicationRecord
belongs_to :language
end
Issue
имеет столбец идентификатора языка:
> Issue.column_names
=> ["id", "created_at", "updated_at", "language_id"]
Language
имеет следующее:
> Language.column_names
=> ["id", "name", "created_at", "updated_at"]
Я могу успешно создать строку языка и строку вопроса, указывающую на этот язык.
> lang = Language.create(name: 'hello')
> Issue.create(language: lang)
>
> Issue.first.language.name
=> "hello"
Я могу найти языковую строку по имени:
> Language.find_by(name: 'hello')
> => #<Language id: 1, name: "hello", created_at: "2019-01-25 16:06:39", updated_at: "2019-01-25 16:06:39">
Но если я попытаюсь использовать следующее соединение, я застряну:
> Issue.joins(:language).where(language: { name: 'hello' })
ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: language.name: SELECT "issues".* FROM "issues" INNER JOIN "languages" ON "languages"."id" = "issues"."language_id" WHERE "language"."name" = ? ORDER BY "issues"."created_at" DESC LIMIT ?)
Разбирая SQL, я предполагаю, что мой запрос ищет идентификатор языка, имя которого соответствует 'hello'
. Но дальше я застрял.
Почему не выполняется запрос join
? Я правильно написал. Проблема с самим запросом или похоже, что он вызван в другом месте?