Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Rails数组可以是“吗?”;解压;?_Sql_Arrays_Ruby On Rails 3 - Fatal编程技术网

Sql Rails数组可以是“吗?”;解压;?

Sql Rails数组可以是“吗?”;解压;?,sql,arrays,ruby-on-rails-3,Sql,Arrays,Ruby On Rails 3,我在客户模型调用中使用以下查询来获得所需的事务集 transactions = sub_account.transactions transaction_items = transactions.map{|transaction| [transaction.transaction_items]} 但是,这将返回一个哈希数组的数组。从rails控制台 [ [# <TransactionItem id: 29, amount: 20>, #<TransactionItem

我在客户模型调用中使用以下查询来获得所需的事务集

  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>
]
我知道你可以压缩一个数组,但是你能解压缩它吗?我找不到关于它的任何文件。如果没有解压,我可以调整where查询以在嵌入式阵列上工作吗

谢谢。

那么:

transactions_items = []
transactions.each{|n|transactions_items = transactions_items.concat(n.transaction_items)}
假设transactions.transactions\u items是一个数组。
.each
将块应用于每个项目,将当前元素
n
transactions\u项目
关联到数组transactions\u项目


请参见

关于角括号的显示。将其标记为代码,它将保留标记汉克斯·托尼,刚刚制作了editHi Dennis。你能再解释一下交易的情况吗?每种方法?这应该是什么回报。在rails控制台中,我似乎无法实现这一点。另外,您是想放置事务“s”项,还是应该将其与模型、事务项相匹配?@Josh_Katz添加了更多解释!我得到了它!所以toSum也是一个数组,设置为:amount等于30的记录。然后循环遍历该数组,将金额添加到当前的总和?@Josh_Katz toSum是您希望汇总的交易项目(金额=>30),然后使用该数组计算总和。
transactions_items = []
transactions.each{|n|transactions_items = transactions_items.concat(n.transaction_items)}
sum = 0
toSum = transactions_items.where(:amount => 30)
toSum.each{|transaction_item|sum += transaction_item.amount}
sum = 0
toSum = transactions_items.where(:amount => 30)
toSum.inject{|sum, transaction_item| sum + transaction_item.amount}