1

私のレール アプリには 3 つのコンポーネントがあります。

特定のユーザーのページにあるすべてのコメントを表示しようとしていますが、そのユーザーのブログ投稿に対するコメントは除きます。コントローラーでクエリをどのように表示する必要がありますか?

これが私がこれまでに持っているものです。コメントはまったく読み込まれません。

    @user = User.find(params[:id])
    @works = Work.pluck(:user_id)
    @comments = @user.comments.where(is_boolean_value: true).where(['user_id NOT IN(?)', @works]).all

ユーザーが作品を所有していないユーザーによって作成されたすべてのコメントを表示するように、このクエリを変更するにはどうすればよいですか?

ありがとう!-b

4

1 に答える 1

3

一番の問題は、

Work.pluck(:user_id)

これにより、テーブル Work のオブジェクトを持つすべてのユーザーの user_id が取得されます。代わりに、ユーザーが作成したアイテムの作業 ID を取得します。

@works = @user.works.map {|obj| obj.id}

次に、そのユーザーに属しているが、彼の作品のいずれにも属していないすべてのコメントを提供するようにデータベースに依頼します。

@comments = @user.comments.where('work_id NOT IN(?)', @works)
于 2013-05-22T01:28:14.950 に答える