我以为我正在尝试做一些简单的事情,并且为什么它不起作用而感到有点困惑 - 基本上,找到包含特定消息(或没有消息)的所有“游戏”对象。
$ Game.where(:message => Message.first)
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: games.game_id: SELECT "games".* FROM "games" WHERE "games"."game_id" = 1
$ Game.where(:message => nil)
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: games.game_id: SELECT "games".* FROM "games" WHERE "games"."game_id" = 1
$ Game.where(:message => nil).to_sql
=> "SELECT \"games\".* FROM \"games\" WHERE \"games\".\"game_id\" = 1"
我真的不明白这里有什么回复给我 - 为什么要检查games.game_id属性?我如何实际运行查询以获取具有特定消息的游戏或根本没有消息?
游戏对象“has_one”消息,其“属于”游戏对象。关系本身工作正常,我只是无法弄清楚如何做where子句。
答案 0 :(得分:2)
这很正常!你只能反向使用这种情况。你可以试试
Message.where(game: nil)
,但是如果你想要游戏,你可以使用它:
Game.joins(:message).where(message: Message.first)