0

我觉得这个问题应该有一个简单的答案,但我无法管理。

我有 3 个模型:用户、课程和教科书。我的模型协会工作得很好,但如果有必要我会包括它们。在我的应用程序中,我想要一个视图来显示用户拥有教科书的课程以及用户不拥有教科书的所有其他课程。在伪代码中,它应该看起来像

@courses_with_books = current_user.textbooks
@courses_without_books = current_user.courses.where(:id != @courses_with_books.course_ids)

我可以使用复杂的循环来完成第二行,但是这些过程看起来很愚蠢,所以我一直在研究一种通过单个查询来收集我需要的信息的方法,但还没有想出任何结果。先谢谢了

4

2 回答 2

1

一般来说,如果您想检查某个属性是否不在某个给定集合内,请尝试“NOT IN”:

current_user.courses.where("id NOT IN ?", @courses_with_books.course_ids)

有关 Active Record 查询的更多信息,请查看Active Record 查询接口指南

于 2012-08-28T21:17:47.017 回答
0

rathrio 是在正确的道路上。我认为第一部分你可以做

@courses_with_books = current_user.textbooks.collect(&:course)

如果您要显示他们title的 s,请执行

<% @courses_with_books.each do |cwb| %>
  <%= cwb.title %>
<% end %>
于 2012-08-28T21:21:22.923 回答