Sql 来自活动记录联接的Postgres错误

Sql 来自活动记录联接的Postgres错误,sql,ruby-on-rails-3,postgresql,activerecord,refinerycms,Sql,Ruby On Rails 3,Postgresql,Activerecord,Refinerycms,Rails 3.2精炼厂2.0.10 我的引擎之间有一个基本的关联 Work belongs_to client Client has_many works 在我的控制器中,我有一个方法,该方法应该给我一个来自指定客户端(myClientName)的作品列表,但我得到一个postgres错误,该错误表示我缺少from子句: target = "myClientName" ::Refinery::Works::Work.joins(:client).where(client: {tit

Rails 3.2精炼厂2.0.10

我的引擎之间有一个基本的关联

Work
  belongs_to client

Client
  has_many works
在我的控制器中,我有一个方法,该方法应该给我一个来自指定客户端(myClientName)的作品列表,但我得到一个postgres错误,该错误表示我缺少from子句:

target = "myClientName"
::Refinery::Works::Work.joins(:client).where(client: {title: target})
错误是:

PG::Error: ERROR:  missing FROM-clause entry for table "client"
我认为我的问题不在于查询,因为它的构造几乎与活动记录文档中的示例相同:

time_range = (Time.now.midnight - 1.day)..Time.now.midnight
Client.joins(:orders).where(orders: {created_at: time_range})
我认为这可能是一个名称空间问题,但sql语句似乎在寻找正确的表。我绝对不是sql专家,但我不认为active record生成的sql有任何问题:

: SELECT "refinery_works".* FROM "refinery_works" INNER JOIN "refinery_clients" ON         "refinery_clients"."id" = "refinery_works"."client_id" WHERE "client"."title" = 'myClientName'

知道这里可能出了什么问题吗?

仔细查看您的查询:

SELECT "refinery_works".* 
FROM "refinery_works" 
这里的内部连接指的是
u客户机

INNER JOIN "refinery_clients" ON "refinery_clients"."id" = "refinery_works"."client_id"
这里您尝试使用
客户机
表属性

WHERE "client"."title" = 'myClientName'
因此,本质上,这个查询是错误的。
可能导致此问题发生的因素:

客户机模型是否引用了另一个表<代码>self.table_name=‘炼油厂_客户机’

尝试更改此部分,
.where(客户端:{title:target})

对于类似的内容,
.where('refinery\u clients.title=?',target)

或者,如果您确实使用了名为
client
。其中('client.title=?',target)