2016-07-28 103 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

相关问题