0

この質問には簡単な答えがあるはずですが、うまくいきませんでした。

ユーザー、コース、教科書の 3 つのモデルがあります。モデルの関連付けは問題なく機能していますが、必要に応じて含めます。私のアプリケーションでは、ユーザーが教科書を所有しているコースと、ユーザーが教科書を所有していない他のすべてのコースを表示するビューが必要です。擬似コードでは、次のようになります

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

複雑なループを使用してその 2 行目を完成させることはできますが、プロセスがばかげているように見えたので、単一のクエリで必要な情報を収集する方法を研究していましたが、まだ何も思い浮かびませんでした。前もって感謝します:D

4

2 に答える 2

1

一般に、ある属性が特定のコレクション内にないことを確認したい場合は、「NOT IN」を試してください。

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

アクティブ レコード クエリの詳細については、アクティブ レコード クエリ インターフェース ガイドを参照してください。

于 2012-08-28T21:17:47.017 に答える
0

Rathrio は正しい道を進んでいます。最初の部分はあなたができると思います

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

title彼らのを表示しようとしている場合は、

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