在 rails 中使用 reject + 条件过滤数组
Filtering array with reject + conditions in rails
我正在尝试过滤具有多个条件的匹配记录数组,但似乎无法弄清楚,我尝试了很多不同的东西并用谷歌搜索了所有内容,但什么都没有...这是代码:
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”不起作用,因为它不能很好地与数组一起使用,而且我似乎无法将它作为拒绝的补充传递进来。如果我们 运行 彼此有任何想法,我们将不胜感激并奖励蛋糕!
我想这会解决您的问题:
def recommendations_for_subscriber subscriber, category, language
Recommendation.where('courses.id NOT IN(?)', subscriber.courses.pluck(:id))
end
我正在尝试过滤具有多个条件的匹配记录数组,但似乎无法弄清楚,我尝试了很多不同的东西并用谷歌搜索了所有内容,但什么都没有...这是代码:
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”不起作用,因为它不能很好地与数组一起使用,而且我似乎无法将它作为拒绝的补充传递进来。如果我们 运行 彼此有任何想法,我们将不胜感激并奖励蛋糕!
我想这会解决您的问题:
def recommendations_for_subscriber subscriber, category, language
Recommendation.where('courses.id NOT IN(?)', subscriber.courses.pluck(:id))
end