Rails加入条件奇怪的结果

时间:2014-05-13 09:32:41

标签: ruby-on-rails activerecord

我正在尝试使用irb为我的rails项目构建一个查询。

Test.joins(:server).where(server: { admin_user_id: 1})

会出现以下错误:

ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:没有这样的列:server.admin_user_id:SELECT" tests"。* FROM" tests" INNER JOIN"服务器" ON"服务器"。" id" ="测试"。" server_id"在哪里"服务器"。" admin_user_id" = 1

这似乎在抱怨无法在服务器表中找到admin_user_id列。现在奇怪的是,如果我sql进入那个确切的数据库并运行:

select * from servers where admin_user_id = 1;

它返回行。

如何正常运作?

2 个答案:

答案 0 :(得分:1)

出现错误,因为生成的SQL引用了不存在的表server(其servers)。

您可以使用@ RSB的答案,或者如果您想保持相同的哈希语法:

Test.joins(:server).where(servers: { admin_user_id: 1})

请参阅Active Record Query Interface Guide

中的示例

答案 1 :(得分:0)

试试这个

Test.joins(:server).where("servers.admin_user_id =?", 1)