我在客户模型调用中使用以下查询来获取我想要的一组事务。
transactions = sub_account.transactions
transaction_items = transactions.map{|transaction| [transaction.transaction_items]}
但是,这将返回一个哈希数组的数组。从rails控制台
[ [# <TransactionItem id: 29, amount: 20>, #<TransactionItem id: 35, amount: 40>],<br>
[# <TransactionItem id: 31, amount: 30>, #<TransactionItem id: 38, amount: 30>],<br>
[# <TransactionItem id: 43, amount: 30>, #<TransactionItem id: 21, amount: 40>],<br>
]
这个过程很有效。但是现在我试图在transaction_items上运行where查询,但不能因为它们嵌入在数组中。这是我无法运行的最终所需查询。
transaction_items.where(:amount => 30).sum("amount")
我知道你可以压缩数组,但是你可以解压吗?我找不到任何文件。如果没有解压缩,我可以调整where查询以在嵌入式阵列上工作吗?
感谢。
答案 0 :(得分:1)
怎么样:
transactions_items = []
transactions.each{|n|transactions_items = transactions_items.concat(n.transaction_items)}
假设transactions.transactions_items是一个数组。
.each
将块应用于每个项目,该项目将当前元素transactions_items
的{{1}}连接到数组transactions_items。
和
n
或
sum = 0
toSum = transactions_items.where(:amount => 30)
toSum.each{|transaction_item|sum += transaction_item.amount}