努力与Active Record连接查询

时间:2013-06-06 13:06:43

标签: activerecord sinatra sequel

我正在使用sinatra和heroku托管的postgres数据库。我有一个在Sequel中运行的查询,它是:

@shortmembers = DB[:shortlists].distinct(:shortname).join(:shortmembers, :short_id => :listid) 

你会如何在Active Record中做到这一点?

在SQL中它将是:

SELECT DISTINCT(shortname), listid FROM shortlists INNER JOIN shortmembers ON shortlists.listid = shortmembers.short_id

最后一个问题,您可以使用Active Record进行原始SQL查询吗?如果是这样,怎么样?

非常感谢!

1 个答案:

答案 0 :(得分:0)

使用Active Record Query Interface中记录的ActiveRecord的selectjoins,您可以执行之类的操作

Shortlists.select(:shortname).uniq.joins(:shortmembers, :short_id => :list_id)

是的,您当然可以使用Active Record进行原始SQL查询,但是您会发现Active Record为大多数查询用例提供了一种方法,并且这些方法比原始SQL更好。