2015-09-27 27 views
0

我試圖過濾一個具有多個條件的匹配記錄數組,並且似乎無法弄清楚,我嘗試了很多不同的東西,並搜索了一切,但沒有任何結果。 ..這裏是代碼:在導軌中用拒絕+條件過濾數組

if @post.last_post? 
    @recommendations = @course.recommendations_for_subscriber(subscriber, category, language).first(3) 
end 

和輔助方法

def recommendations_for_subscriber subscriber, category, language 
    course_ids = subscriber.courses.pluck(:id) 
    recommendations.reject { |c| course_ids.include? c.id } 
end 

什麼,我試圖做的是在類別和語言的條件傳遞給只具有結果與規定的相同條件。 「.where」將不起作用,因爲它不適用於數組,我似乎無法通過它作爲拒絕的補充。如果我們遇到過對方,任何想法都會得到超級讚賞和獎勵!

+0

什麼是你得到錯誤信息?這是什麼目前輸出?另外,如果這些值沒有被使用,爲什麼你將'category'和'language'傳遞給'recommendations_for_subscriber'方法? – DaniG2k

回答

0

我想這將解決問題:

def recommendations_for_subscriber subscriber, category, language 
    Recommendation.where('courses.id NOT IN(?)', subscriber.courses.pluck(:id)) 
end 
+0

非常感謝!這工作完美。儘管我現在感覺有點遲疑了。讓我知道你是否曾經在斯德哥爾摩,我會用蛋糕來報答你! – LessPixels

+0

很高興它工作。如果我曾經訪問過斯德哥爾摩,我肯定會得到你的蛋糕:) – usmanali

+1

你也可以用'Recommendation.where.not(courses:{id:subscriber.courses.pluck(:id)})'消除片段。 – ahmacleod