RoR查询条件:不包含任何属性列表

时间:2012-08-28 21:03:02

标签: ruby-on-rails object

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

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

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

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

2 个答案:

答案 0 :(得分:1)

一般来说,如果你想检查一些属性不在某个给定集合中,请尝试'NOT IN':

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

有关Active Record Queries的更多信息,请查看the Active Record Query Interface Guide

答案 1 :(得分:0)

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

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

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

<% @courses_with_books.each do |cwb| %>
  <%= cwb.title %>
<% end %>