簡體   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