2016-07-28 98 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並不熟悉,並且知道存在一些差異。我如何改變這個在postgres中查詢?

+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

相關問題