Ruby on rails rails记录推送

Ruby on rails rails记录推送,ruby-on-rails,Ruby On Rails,控制器.rb @payments = PaymentDetail.joins(:project) 在视图文件@payments.count中等于550 当我像这样更换控制器时 @payments = PaymentDetail.joins(:project) @payment_errors = PaymentError.joins(:project) @payment_errors.each {|payment_error| @payments << payment_error}

控制器.rb

@payments = PaymentDetail.joins(:project)
在视图文件@payments.count中等于550

当我像这样更换控制器时

@payments = PaymentDetail.joins(:project)
@payment_errors = PaymentError.joins(:project)
@payment_errors.each {|payment_error| @payments << payment_error}
@payments=PaymentDetail.join(:项目)
@payment\u errors=PaymentError.joins(:项目)

@付款错误。每个{付款错误}@payments都是由于延迟加载

PaymentDetail.joins(:project)
这不会立即加载付款。而是在您开始访问付款时立即加载付款(例如,在
每个
循环中)。您可以通过将结果强制加载到数组。请尝试以下操作:

@payments = PaymentDetail.joins(:project).to_a
@payment_errors = PaymentError.joins(:project).to_a
@payments += @payment_errors
或者,如果您不需要将
@payment\u errors
作为单独的变量:

@payments = PaymentDetail.joins(:project).to_a + PaymentError.joins(:project).to_a

您正试图将
PaymentError
数据添加到
PaymentDetail
表中,这是错误的。如果您在数组中需要它,请使用
添加到

您可以这样做:

 @payments = PaymentDetail.joins(:project).to_a + PaymentError.joins(:project).to_a
使用
将为阵列分页。在控制器中添加此行:

 `require 'will_paginate/array'`

但是我想使用@payments和will_paginate gem,所以它必须是ActiveRecord::Relation而不是array。我也想订购它。谢谢你的分享