ActiveRecord有两个有很多集合和一个group_by查询

时间:2014-04-05 16:12:01

标签: ruby-on-rails postgresql activerecord ruby-on-rails-4

我试图查询每个人的点击次数。 所以我可以展示一下那个董事会成员的表格。并为每个人显示他获得的点击次数。

如何为此信息创建activeRecord查询?

我的3个模特:

class Click < ActiveRecord::Base
    belongs_to :board
    belongs_to :person
end

class Board < ActiveRecord::Base
    has_many :persons, dependent: :destroy
    has_many :clicks, dependent: :destroy
end

class Person < ActiveRecord::Base
    belongs_to :board
    has_many :clicks, dependent: :destroy
end

1 个答案:

答案 0 :(得分:1)

嗯,有很多方法可以为此构建查询,其中之一是:

Click.where(person_id: your_person_id_variable, board_id: your_board_id_variable)

通过这种方式,您可以获得人员和董事会信息的一系列点击次数。您还有阵列大小,表示点击次数。

您也可以使用board作为主要模型,并使用sql joins带来其他数据。它基本上是相同的方法:

Board.joins([:persons, :clicks]).where("persons.id = #{your_person_id_variable} 
  AND clicks.id = #{your_board_id_variable}")

您应该查看这部分关系中的Rails指南和ActiveRecord查询接口。还可以大量使用Rails控制台,您可以在那里测试任何内容,并使其易于理解所有概念。