2016-09-27 46 views
0

我有一個位置模式和我的位置控制器中我使用的是geokit寶石搜索附近的地點:軌道4控制器:如何使用邏輯運算符正確

@locations = Location.near(current_user.location, 250) 

如何我居然在一個控制器動作區分比如說一個地點是不是is_remote == true

含義:
@locations實際上應該輸出所有的位置,它們要麼is_remote == truenear(current_user.location, 250)

在此先感謝您的每一個答案!如果您需要更多信息,請告訴我。

+0

如何獲得'is_remote == true'條件的位置? –

+0

'Location.where(is_remote:true)' – Gugubaight

回答

1

只需加在一起:

@locations = Location.near(current_user.location, 250) + Location.where(is_remote: true) 

萬一有些是重複的,你可以uniq他們:

@locations = (Location.near(current_user.location, 250) + Location.where(is_remote: true)).uniq 

或者你甚至可以使用紅寶石set union operator而不是+uniq(雖然有些可能會認爲它不可讀):

@locations = Location.near(current_user.location, 250) | Location.where(is_remote: true) 
+0

嗯......那個relly應該可以工作,但對我而言,它不會以某種方式......我檢查我的View是否存在'@ locations.exists?'。只要我按照你的建議做了我會得到一個No Method'未定義的方法'存在嗎?''我也保證每個部分都能正常工作,所以你的建議解決方案必須有一個問題。 – Gugubaight

+0

'exists?'是一個'ActiveRecord :: Relation'方法,通過添加或聯合兩個Location作用域,將'@ locations'變成一個普通數組。使用此解決方案,您需要使用Array或Enumerable方法,如'@ locations.any?'或'@locations.size!= 0' – DiegoSalazar

+0

非常感謝您的幫助! :) – Gugubaight