0

Rails 3.2 では、ユーザー表示ページで、ユーザーが気に入った、またはタグ付けしたユーザーのリストを表示しようとしています。

@user = User.find(params[:id])
@users = User.where(( id: @user.tags.uniq.map(&:user_id)) | (id: @user.likes.uniq.map(&:user_id)) )

これにより、構文エラーが発生しています。他のいくつかの順列を試しましたが、うまくいきませんでした。

2 つの関連付けに対して OR クエリを実行する正しい構文は何ですか?

ありがとう

4

1 に答える 1

1

@user.tags両方のクエリに id 列を使用しているため、検索を行う前に両方のとの id を組み合わせることができ@user.likesます。

@user = User.find(params[:id])
user_ids = (@user.tags.map(&:user_id) + @user.likes.map(&:user_id))
@users = User.find(user_ids.uniq)

おそらくこれをさらに洗練することができますが、これは私には理解しやすいようです。

于 2012-06-09T11:05:52.287 に答える