我今天穿得很瘦,所以可能我在问一些非常明显的问题。
我有两种型号:
Issue
和
Language
. 一个问题有一种语言,一种语言有许多问题。
class Language < ApplicationRecord
has_many :issues
end
class Issue < ApplicationRecord
belongs_to :language
end
问题
具有语言ID列:
> Issue.column_names
=> ["id", "created_at", "updated_at", "language_id"]
语言
具有以下内容:
> 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')
> =>
但是如果我尝试使用下面的连接,我就卡住了:
> 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,我假设我的查询正在查找语言名称匹配的语言ID。
'hello'
. 但除此之外,我还被困住了。
为什么是
join
查询失败?我写的对吗?查询本身是否有问题,或者看起来是由其他地方引起的?