尝试实现使用与 STI 关联的搜索逻辑搜索,但我遇到了一个问题,即它没有选择 STI 记录作为子类而是父类。
例子:
class Users
end
class Artist < User
has many :agents, :through => :agents artists
end
class Agent < User
has many :artists, :through => :agents artists
end
当我搜索“艺术家代理公司喜欢”时,它基于代理作为用户而不是代理进行搜索:
select * from users WHERE users.company LIKE
而不是
select * from users AS agents WHERE agents.company LIKE
想知道我是否可以在 ActiveRecord 类级别预先解决这个问题(例如,在关联中,我想如果你可以指定代理将被加载 :as=>:agent 或类似的东西),或者我是否会需要修补 searchlogic 或我可以做些什么来完成这个。
我想到的另一个选项,我害怕这个想法,是在用户表上添加一个字段,其中包括个人机构的列表。例如 users.agencies => 机构一名称,机构二名称