2016-07-28 7 views
0

投稿をフィルタリングしようとしていますが、このクエリを使用して投稿を取得しています。このsqliteクエリをRuby on Railsのpostgresqlクエリにどのように変換すればよいですか?

@posts = Post.all.includes(:course).where("courses.name IN (#{@user.courses.map(&:name).collect { |s| "'#{s}'" }.join(',') })").references(:course).order("posts.created_at DESC") 

私はpostgresqlに精通しておらず、いくつかの違いがあることを知っています。これをポストグルのクエリに変更するにはどうすればよいですか?

+1

クエリを実行しようとしましたか?それはうまくいくかもしれません。 – MarsAtomic

答えて

1

あなたのお問い合わせは、そのまま実施されます。

@posts = 
    Post.all.includes(:course).where("courses.name IN (?)", @user.courses.map(&:name)).order("posts.created_at DESC") 

Railsはあなたがそれを手動で行う必要はありません。この配列の値@user.courses.map(&:name)

に参加するの世話をします。しかし、あなたは、あなたがやっている不要な動作を避けるために、クエリを変更することができます。

+0

あなたは正しいです、それは動作します、私はこの質問を投稿したように私はpostgresに切り替えていましたが、私はこの簡単なクエリを表示してうれしいです。ありがとうございます! – Ryan

関連する問題