我正在尝试获取用户可以执行的任务列表。我成功做到了,这是我的代码
@tasklist = []
user_info = [current_user.tag_list, current_user.ethnicity, current_user.gender, current_user.school, current_user.major ].flatten!
Task.all.each do |task|
if task.tag_list.all? { |i| user_info.include?(i) }
@tasklist.push(task)
end
end
现在,尽管在我的代码的先前实现中,这一切都很棒。我将@taglist用作活动记录,并且我曾经使用过两个活动记录功能include和on,它们分别是:
@availabletasks = @tasklist.includes(:states).where(states: {user_id: current_user.id, value_cd: 0})
理想状态是将获取任务列表的代码替换为单个Query。 另一个选择是用数组选择语句替换我的第二行代码。尽管我不知道该怎么做。
感谢您的帮助!