簡體   English   中英

SearchLogic + STI

[英]SearchLogic + STI

嘗試實現使用與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 =>代理商一個名稱,代理商兩個名稱

我找到了一個似乎運行良好的解決方案,我在artist類上添加了一個命名范圍:

命名范圍:代理商包括lambda {| c | {:joins =>:agents,:conditions => {:agents用戶=> {:company => c}}}}

搜索字段現在稱為搜索[藝術家機構包括]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM