ruby-on-rails - Rails 将 will_paginate 与组合查询结果结合使用

标签 ruby-on-rails ruby pagination will-paginate

在我的应用程序中,我有一个包含许多付款和发票的客户模型。

# 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

在客户展示模板中,我合并了所有发票和付款并将它们存储在@transactions 实例变量中。

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

我想使用 will_paginate 对@transactions 进行分页.这样做是行不通的:

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

实现此目标的最佳方法是什么?

最佳答案

最好的方法是创建第三个具有多态关联的事务表作为事务。并对交易进行分页。

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

首先学习多态关联

 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

其他对两者都进行分页或使用分页数组都不好的方式。

关于ruby-on-rails - Rails 将 will_paginate 与组合查询结果结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403748/

相关文章:

ruby-on-rails - 我怎样才能写更多 "ruby-ish"?

ruby-on-rails - 如何在日期选择中降序显示年份?

ruby-on-rails - 我的输出对于从控制台创建新对象是否正确?

ruby - IRB - Ruby 1.9.x 哈希语法 : {if: true} is not equal to {:if => true}

ios - 如何做Ipad分页

javascript - simplePagination.js 不适用于 php MySQL 数据库搜索

ruby-on-rails - 如何将参数传递给 ActiveModel 序列化器

ruby-on-rails - 预期 #count 已更改为 1,但未获得 block

ruby - vi readline 支持 jruby 的 irb

ios - 如何创建基于页面的 WatchKit 应用程序?