【问题标题】:Group and count active record Rails对活动记录进行分组和计数 Rails
【发布时间】:2014-06-02 11:53:17
【问题描述】:

我有两个表usersvotations,投票中有两个字段win_iduser_id。 我需要使用win_id(投票)和id(用户)在活动记录中创建查询。

我的sql查询是这样的: Select users.name, Count(votations.win_id) from votations Inner Join users ON vontations.win_id = users.id Group By users.name;

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    假设您在Violation 中有这样的关联:

    belongs_to :user, foreign_key: "win_id"
    

    那么应该这样做:

    Violation.joins(:user).group("users.name").count
    

    它会给你一个哈希值,用户名作为键,计数作为值。

    如果您没有该关联并且不想要它,请将joins() 更改为:

    joins("JOIN users ON violations.win_id = users.id")
    

    【讨论】:

    • 太棒了! Votation.joins(:win).group("users.name").count THX BRO !
    【解决方案2】:

    最清晰的方法可能是只使用find_by_sql (docs here):

    User.find_by_sql("Select users.name, Count(votations.win_id) from votations Inner Join users ON vontations.win_id = users.id Group By users.name")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多