[英]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.