繁体   English   中英

Rails Active Record查询计数多个关系

[英]Rails Active Record query count multiple relations

我有一个这样的数据库结构:

  • 群组has_many软件包
  • 套餐has_many房间
  • 客房有多个客户

好。 每个房间都可以是“ Quadruple”,“ Triple”,“ Double”等。通过执行Group.rooms,我可以访问属于Group的所有房间。

我希望能够获得集团每种房型有多少个客户。

例如:

  • 四人房:16位客户
  • 双:10位客户* etc。

我设法获得每种类型的房间数量,如下所示:

Group.rooms.group('type').count

有任何想法吗?

更新1-模型

Quarto.rb(房间)

class QuartoContratado < ActiveRecord::Base
    belongs_to :pacote
    has_and_belongs_to_many :clientes, :join_table => :acomodacoes

Pacote.rb(包装)

class Pacote < ActiveRecord::Base        
    belongs_to :grupo
    has_many :passageiros
    has_many :clientes, :through => :passageiros
    has_many :quartos, :class_name => "QuartoContratado"

Grupo.rb(组)

class Grupo < ActiveRecord::Base
    has_many :pacotes
    has_many :clientes, :through => :pacotes, :conditions => { :pacotes => { :cancelado => false } }
    has_many :quartos, :class_name => "QuartoContratado", :through => :pacotes, :conditions => { :pacotes => { :cancelado => false } }

Client.rb(客户端)

class Cliente < ActiveRecord::Base
    has_many :passageiros
    has_many :pacotes, :class_name => "Pacote", :through => :passageiros
    has_many :grupos, :through => :pacotes, :conditions => { :pacotes => { :cancelado => false } }

这就是我设法得到想要的东西的方法……看起来很丑! 还有更好的写法吗?

group = Grupo.first
types = group.quartos.group_by { |t| t.type }

types.each do |key, value|
   print "#{key} - "
   c=0
   value.each do |v|
    c= c+v.clientes.count
   end
   puts "#{c} clients"
 end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM