Ransack / Rails 6 : PG::UndefinedTable 通过 belongs_to 查询

Ransack / Rails 6 : PG::UndefinedTable for a query through a belongs_to

我无法链接 where 查询和 Ransack 查询,出现 PG::UndefinedTable 错误。我正在使用 Rails 6.1.3 和 Ransack 2.4.2.

我看到了这个问题:https://github.com/activerecord-hackery/ransack/issues/1119 每个人都同意升级到 rails 6.1 后问题已经解决。可悲的是,不是我的情况。

我的模型是这样的:

class Appointment < ApplicationRecord
  belongs_to :slot
end 

class Slot < ApplicationRecord
  belongs_to :place
end

这个查询

Appointment.joins(slot: [:place])
           .where('slot.date' => Date.today)
           .ransack(slot_place_id_eq: 2)
           .result

returns 这个错误:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  invalid reference to FROM-clause entry for table "slots")
LINE 1: ...ointments"."slot_id" WHERE "slot"."date" =  AND "slots"."p...
                                                             ^
HINT:  Perhaps you meant to reference the table alias "slot".

生成的查询如下,实际上,slots.place_id 不能用于 belongs_to。

SELECT appointments.*
FROM appointments 
INNER JOIN slots slot ON slot.id = appointments.slot_id
INNER JOIN places ON places.id = slot.place_id
WHERE slot.date = '2021-06-30' AND slots.place_id = 2

有什么线索吗?

我刚刚解决了这个问题:这是一个不同的问题,错误消息与另一个问题相同。

这个:

.where('slot.date' => Date.today)

应该是这样的:

.where('slots.date' => Date.today)

2小时研究,10分钟写一道SO题,点击发布后30秒自己找到答案....