ActiveRecord::StatementInvalid 未知列错误

问题描述 投票:0回答:2

为什么这个工作正常:

Tag.create(game_id: 1, tagged: u)

但是这个:

tags = Tag.where(game_id: 1, tagged: u).includes(:tagged)

给出错误:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'tags.tagged' in 'where clause': SELECT `tags`.* FROM `tags`  WHERE `tags`.`game_id` = 1 AND `tags`.`tagged` = 1

顺便说一句,

u
ActiveRecord::Base
子类。

Tag
表结构:

create_table :tags, force: true do |t|
    t.references :game
    t.references :tagged_by
    t.references :tagged
    t.timestamps
end
ruby-on-rails ruby activerecord
2个回答
2
投票

尝试做

tags = Tag.includes(:tagged).where(game_id: 1, tagged_id: u.id)

0
投票

发生错误是因为

Tag
模型没有为
tagged
定义关联。

要解决此问题,您可以在

belongs_to :tagged
模型中添加
Tag
关联,或者显式引用列名称作为 @pungoyal:

的答案
tags = Tag.where(game_id: 1, tagged_id: u.id).includes(:tagged)
© www.soinside.com 2019 - 2024. All rights reserved.