轨道 4:活动记录收集循环或迭代



在我的 rails 客户控制器中有一个活动的记录收集对象:

1. @pay_invoices = 发票.where(customer_id: @pay_cus_id)

#<ActiveRecord::Relation [#<Invoice id: 37, customer_id: 53, paid_amount: 960, devicemodel_id: 2, transaction_id: "6drv3s", created_at: "2016-01-04 05:29:03", updated_at: "2016-01-25 12:16:14">, #<Invoice id: 70, customer_id: 53, paid_amount: 80, devicemodel_id: 2, transaction_id: "2mr93s", created_at: "2016-01-28 09:02:43", updated_at: "2016-01-28 09:02:43">]>

同样在我的控制器中,我使用以下 Braintree API 调用使用 transaction_id: 列值来查找 Braintree 支付网关中的交易详细信息

 @tid = @pay_invoices[0].transaction_id
 @transaction = Braintree::Transaction.find(@tid)

这对我来说很好用,但是第一个transaction_id的交易详细信息只能使用此代码从@pay_invoices集合中检索,我想遍历@pay_invoices集合,并且每次我想将 braintree 交易详细信息存储到另一个集合中,以便只有我可以在我的视图中显示每笔交易的付款详细信息。

如何实现它?

transaction_ids = Invoice.where(customer_id: @pay_cus_id).pluck(:transaction_id)
@transactions = []
transaction_ids.each do |t_id|
  @transactions << Braintree::Transaction.find(t_id)
end

虽然如果有一个等效的地方,你可以简单地做一些类似的事情

transaction_ids = Invoice.where(customer_id: @pay_cus_id).pluck(:transaction_id)
@transactions = Braintree::Transaction.where(transaction_id: transaction_ids)

最新更新