我有2個模型,通過關聯與has_many關聯。Rails 5.選擇常用關聯
service has_many :masters, through: :master_services
master has_many :services, through: :master_services
我使用HMT的原因是我需要給每個主/服務交叉點提供一些細節,如價格和持續時間。
通過AJAX我向控制器發送了一個service_ids數組,並且我應該返回我的視圖中的一個Masters數組(重要!),他提供了所有列入的服務。
我現在得到:
services = params[:service_ids] #get array of service_ids
@services = Service.where(id: services) #get array of arrays of services (mindblowing)
@masters = @services.map {|service| service.masters } #get master for each service
@masters.flatten! #transform array of arrays into a plain array
@masters.uniq! #I don't need repeats
但這@services = Service.where(ID:服務)返回這些服務都是高手。它被翻譯成SQL像
SELECT * FROM services WHERE id in ('5', '6', '7')
它給出了一些結果,但不是我想要實現的。我需要一份主人名單,這些人員在所有這些服務中都是通用的。所以我需要你的幫助,親愛的社區。我不知道,也許有辦法通過ActiveRecord來完成,或者通過對結果數組進行一些轉換。
說明
大師喬希提供服務:洗車(ID 1),神經外科(ID 2),收縮(ID 3)。 海倫大師提供服務:縮水(id 3),洗車(id 1),身體雙層(id 4)。 弗朗索瓦法師提供服務:收縮(id 3)。
我想要如果收縮選擇,獲得所有的大師。 如果選擇收縮和洗車,只能獲得Josh和Helen,因爲他們提供這兩種服務,而Francois則不會。 如果只選擇洗車,然後得到同樣的喬希和海倫陣列。如果選擇了神經外科手術和身體雙重手術,那麼不會得到 - 這些大師都不會提供這兩種服務。
它給出了相同的結果。所有提供至少一種服務的主人,不是全部。 – Leeder
對不起,你想在每項服務中都有主人嗎? –
是的。讓我解釋。我將編輯我的主題帖子。 – Leeder