2016-05-30 4 views
2

私は.whereのビルドに問題があり、特定の値を取得しています。Rubyビルド.2クラス以上

私はこの階層を持っている:

-customer

--has_manyプロジェクト

--- has_manyのチケット

私はActiveRecordのよう顧客IDですべてのチケットを取得します: :関係。

customer_projects = Project.where(:customer_id => c.id) 
    tickets = ActiveRecord::Relation.new(Ticket, anything) 
    customer_projects.each do |cp| 
    project_tickets = Ticket.where(:project_id => cp.id).where("DATE(created_at) >= ?", report.start_time).where("DATE(created_at) <= ?", report.end_time) 
    tickets.insert(project_tickets) 
    end 

これでも動作するかどうか、私はテーブル引数として「何でも」のために書くことはどこもないと確信している、また:

私の考えは、(cは私がチケットをしたい人からの顧客である)このループでした。私はすべてのチケットを取得できる「シンプルな」.whereが好きです。

答えて

5

あなたはこのすべての面倒を必要としません。あなたのためにそれを行う方法はthroughです。

# customer.rb 
has_many :tickets, through: projects 

# ticket.rb 
has_many :customers, through: projects 

この方法で、あなたが行うことができます:

@customer.tickets 
@ticket.customers 
関連する問題