2015-09-15 42 views
-1

根据wikibooks.orgrubyonrails.org,这应该是工作:Rails的`average`方法不起作用

Table.average(:score, :conditions => ['user_id=?', 1]) 

但事实并非如此。为什么?当我在上面做时,我的控制台说:

SELECT AVG("table"."score") FROM "table" 

根本没有条件。

最后,我做了什么,我想是这样的:

Table.where('user_id=?', 1).average(:score) 

但我仍然感到困惑。

+0

Pavan,请告诉我在哪里可以找到那些信息在Rails的每个版本中都有哪些方法。这将在未来帮助我。 –

+0

如果没有阅读文档或任何内容,user_id中的'user_'看起来很奇怪,或者你有'user belongs_to user'吗? 'id'或'user.ud'对我来说似乎是更现实的选择。 – Felix

+1

在此示例中,我正在表calld“table”中搜索user_id。我想生成这个SQL:SELECT AVG(“table”。“score”)FROM“table”WHERE(user_id ='3') –

回答

0

您正在尝试使用所谓的finders api,其中deprecated从Rails 4.0开始,已被移至单独的gem activerecord-deprecated-finders以便从旧版本迁移。 Finders api已从0123.开始从Rails 4.1开始。

在的光解决方案

User.where(user_id: 1).average(:score) 

以上是正确的。

+0

不够公平。谢谢! –

+0

不客气! –