Rails重新调整具有多个条件的id数组

时间:2017-01-01 20:44:02

标签: ruby-on-rails arrays

在我的控制器中,我希望返回一个附加了2个条件的数组。

parent_ids = StudentGuardian.where(:guardian_id => current_user.school_user.id).pluck(:student_id)

classmodule_ids = SubjectStudent.pluck (:class_id)

@homework = Homework.where("subject in ?", classmodule_ids)

所以在这种情况下,我需要从表中找到一个学生ID,然后我需要从另一个表中获取一个class_id。

然后我试图显示结果。

我可以同时使用一个查询吗?

我也试过@homework = Homework.where("subject in ?", parent_ids, classmodule_ids)当然这不起作用!

1 个答案:

答案 0 :(得分:2)

您只想知道subjectparent_ids中是否有classmodule_ids

所以你可以将parent_idsclassmodule_ids合并到一个数组中:

# you could merge these a bunch of different ways, here's one:
search_ids = (parent_ids + classmodule_ids).uniq
# don't forget the () around ? below
@homework = Homework.where("subject in (?)", search_ids)

或者,如果由于某种原因您不想将parent_idsclassmodule_ids合并:

@homework = Homework.where("subject in (?) OR subject in (?)", parent_ids, classmodule_ids)

但所有这些都意味着subject也是一个身份......是这样的吗?