我正在使用PostgreSQL的inheritance特性来建模我的数据,我需要在某些ActiveRecord模型的查询中使用ONLY关键字。例如,我希望Shift.all调用SELECT shifts.* FROM ONLY shifts。否则,它还将返回来自childassigned_shifts表的结果。
据我所知,没有一种简单的可配置方法可以做到这一点。我在ActiveRecord模型上尝试过set.table_name = 'ONLY shifts',但这会产生一个错误,因为它将'ONLY shifts'.*添加到SELECT语句中。
有没有办法对Arel或ActiveRecord进行monkey补丁来构建我需要的查询?

最佳答案

我自己找到了答案。
子孙后代:

class Shifts < ActiveRecord::Base
  default_scope -> { from("ONLY shifts") }
end

10-08 11:16