[英]Rails Active Record query count multiple relations
我有一个这样的数据库结构:
好。 每个房间都可以是“ Quadruple”,“ Triple”,“ Double”等。通过执行Group.rooms,我可以访问属于Group的所有房间。
我希望能够获得集团每种房型有多少个客户。
例如:
我设法获得每种类型的房间数量,如下所示:
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.