2016-04-04 15 views
4

Uygulamamda birçok ödeme ve faturaya sahip bir müşteri modelim var. müşteriler ise Raylar, kombine sorgu sonuçlarıyla birlikte_yayınlama_adı kullanın

# customer.rb 
class Customer < ActiveRecord::Base 
    has_many :payments 
    has_many :invoices 
end 

# payment.rb 
class Payment < ActiveRecord::Base 
    belongs_to :customer 
end 

# invoice.rb 
class Invoice < ActiveRecord::Base 
    belongs_to :customer 
end 

tüm Faturalar ve Ödemeler birleştirerek ve @transactions örnek değişkeninde saklayarak am şablonu göstermektedir.

class CustomersController < ApplicationController 
    def show 
    @customer = Customer.find(params[:id]) 
    payments = Payment.where(customer: @customer) 
    invoices = Invoice.where(customer: @customer) 
    @transactions = payments + invoices 
    end 

Ben will_paginate kullanarak @transactions sayfalandırmak istiyorum. Bunu yapmak işe yaramıyor:

@transactions.paginate(page: params[:page]) 

Bunu gerçekleştirmenin en iyi yolu nedir?

+0

Bu Cevap sorununuzu çözecektir http://stackoverflow.com/questions/4352895/ruby-on-rails-will-paginate-an-array – Thorin

cevap

4

En iyi yol, işlem olarak polimorfik ilişkilendirme ile üçüncü bir İşlem Tablosu yaratılmasıdır. Ve işlemler üzerinde paginate. İlk polimorfik Derneğine hem paginate ya da dizi paginate kullanımı iyi değil

class Transaction < ActiveRecord::Base 
    belongs_to :transactionable, polymorphic: true 
end 

class Invoice < ActiveRecord::Base 
    has_many :transactions, as: :transactionable 
end 

class Payment < ActiveRecord::Base 
    has_many :transactions, as: :transactionable 
end 

Diğer bir şekilde bilgi

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

.

+0

Ben raylara yeniyim. Bunu nasıl yapacağımı öğrenebileceğim kaynaklar sağlayabilir misiniz? – James

+0

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations –

İlgili konular