我正在使用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