2015-11-07 26 views
0

我爲我的rails應用程序使用geocoder gem,它爲每個用戶地址提供經度和緯度。用戶的每個配置文件都有一個地址(以及更多)。該配置文件當前擁有一個地址,地址belongs_to配置文件。rails geocoder gem找到具有匹配地址的用戶

我想要做的是搜索區域,所以我使用near()函數,它在控制器上正常工作,當我想要搜索Address模型時。它返回給我一個@實例,我可以在視圖中使用它,並循環顯示每個地址結果的address.profile.suburb或.name等結果。但是這是在視圖中完成的。

我想要做的是有一個@users的實例,因爲我想要做的下一件事是通過其他模型進行篩選 - 我有一個樣式模型,如果他們已經檢查過濾器樣式 - 任何用戶樣式和有一個地址near()將返回到@user實例,然後我可以在視圖中使用它。

不知道如何做到這一點,一切我儘量不工作 - 我認爲這將是像User.all.profiles.address.near(PARAMS [:搜索])

但我需要也通過風格,是不是與地址(這是用戶模型)

或類似的東西,一臺過濾...

幫助表示讚賞。

+0

做一步一步來。這將有助於清理你的思想。不要試圖在活動記錄中做所有事情。它一直都不可能。如果您有工作解決方案,請在此處發佈,以便人們可以改進/優化 – phoet

回答

0

您提供的上下文相當模糊。樣式是一個表本身還是用戶表中的一列?風格和用戶之間有什麼關係? (has_many,has_one,...)

想法是將其分解成步驟。 假設用戶has_one樣式,params[:style]是和預期樣式的id。

你可以這樣做:

@users = User.all.profiles.address.near(params[:search]) 
@users.joins(:style).where('styles.id = ?', params[:style]) 
相關問題