0

如果我有一个名为 100 个对象的数组Stream,如下所示:

User.find(1001).streams.find( :all, :order => "id", :limit => 100 )

这基本上是一个数据表,我如何从中选择某个字段,例如评级?在 SQL 中,我需要做的就是SELECT rating FROM streams WHERE user_id=1001 ORDER BY id LIMIT 100,,但我不知道如何在 Ruby on Rails 中做到这一点。使用上面的命令会返回我无法使用的所有字段。

4

1 回答 1

1

下面的代码将返回一个数组rating

User.find(1001).streams.all( :order => "id", :limit => 100).map(&:rating) 

如果您想避免检索User对象的所有属性的成本:

User.find(1001).streams.all:select => "rating", 
  :order => "id", :limit => 100).map(&:rating) 

SELECT您可以在 key 的值中使用标准子句语法:select

如果要避免构造User对象:

User.connection.select_values("select rating from users order by id limit 100")
于 2012-04-19T21:33:09.653 回答