2013-10-05 21 views
0

,当我在phpPgAdmin的运行轨道4的find_by_sql不返回相同的结果。phpPgAdmin的

   sql = "select count(school_id) as vote_total, 
        row_number() over(order by count(school_id) 
        DESC) as rank, school_id 
        from votes 
        where school_id = 111111 
        group by school_id" 

,我得到了我期待的

 vote_total rank school_id 
      68 1 111111 

但是当我做Vote.find_by_sql相同我得到

 [#<Vote id: nil, school_id: 111111>] 

我猜find_by_sql不是我应该使用的。任何想法的正确方法来做到这一点?

+0

可能重复没有定义getter方法[无法选择行分组创建\ _at](http://stackoverflow.com/questions/17714693/cant-select-rows-grouping-by-created-at) –

回答

2

你可以得到vote_total和学校ID像下面

sql = "select count(school_id) as vote_total, 
        row_number() over(order by count(school_id) 
        DESC) as rank, school_id 
        from votes 
        where school_id = 111111 
        group by school_id" 

votes = Vote.find_by_sql(sql) 
votes.first["vote_total"] #or votes.first.vote_total 
voted.first["school_id"] #or votes.first.school_id 

由于vote_total和学校ID不投票的属性,也有那些

+2

accessor方法实际上是那里所以'votes.first.vote_total'将工作。 ['inspect'输出,但是,只包含模型属性](http://stackoverflow.com/a/17714928/479863),所以'vote_total'和'rank'在'[#<投票ID:无,school_id:111111>]'。 –

相关问题