2016-01-28 42 views
0

以我导轨客户控制器有一个有效记录的集合对象:轨道4:活动记录收集的循环或迭代

1. @pay_invoices = Invoice.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">]> 

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

@tid = @pay_invoices[0].transaction_id 

@transaction = Braintree::Transaction.find(@tid) 

这对我来说工作正常,但第一TRANSACTION_ID的交易细节:从@pay_invoices收集仅可使用此代码检索,我想通过@pay_invoices迭代收集和各我希望将braintree交易详细信息存储到另一个集合中,以便只有我可以在我的视图中显示每笔交易的付款详情。

如何实现它?

+0

是否布伦特里的API有东西在一次加载多个交易? –

+0

在每次通过活动集合进行迭代时,每次通过传递transaction_id进行braitree api调用时:使用它,它会返回一个collcetion,我想将事务的状态存储到某处,此过程将继续,直到循环迭代结束所有活动的记录收集和许多交易状态也将被存储。 –

+0

我的意思是,它是否具有相当于'ActiveRecord'的'where'子句,您可以在其中传递一组事务ID?像Braintree :: Transaction.where(transaction_id:[1,2,3])''? –

回答

0
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) 
+0

感谢好友为您提供帮助,我会在一段时间后尝试它,并让您知道它是否解决了我的问题或不是:) –