2016-04-04 10 views
4

In meiner Anwendung habe ich ein Kundenmodell, das viele Zahlungen und Rechnungen hat.Rails verwenden will_paginate mit kombinierten Abfrageergebnissen

In der Vorlage für die Kundenvorlage vereinige ich alle Rechnungen und Zahlungen und speichere sie in der @transactions-Instanzvariablen.

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

Ich möchte @transactions Paginieren will_paginate verwenden. Das funktioniert nicht:

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

Was ist der beste Weg, dies zu erreichen?

+0

Diese Antwort löst Ihr Problem http://stackoverflow.com/questions/4352895/ruby-on-rails-will-paginate-an-array – Thorin

Antwort

4

Am besten erstellen Sie eine dritte Tabelle mit Transaktionen mit polymorpher Zuordnung als transaktionsfähig. Und über Transaktionen paginieren.

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

erste polymorphe Vereinigung

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 

Andere Art und Weise lernen, die beide nicht gut Paginieren oder Array verwenden Paginieren.

+0

Ich bin neu in Schienen. Können Sie Ressourcen bereitstellen, in denen ich lernen kann, dies zu tun? – James

+0

http://guides.rubyonrails.org/association_basics.html#polymorphe- Assoziationen –