0

我想在 Rails 中创建一个数组,其中包含两列的每一个值,但每列只有一次。因此,例如,在“A”{1,5,7,1,7}列和“B”列中有{3,2,3,1,4}

当我只想要一个包含“A”所有元素的数组时,我会写:

Model.uniq.pluck(:A)

我会得到{1,5,7}

Rails 中是否有一个选项可以用两列做同样的事情,所以只需一次获取包含在两列中的所有值?(这里是{1,5,7,3,2,4}

感谢帮助!

4

2 回答 2

3

是的,将多个列名传递给pluck

Model.pluck(:A, :B)
#=> [[1, 3], [5, 2], [7, 3], [1, 1], [7, 4]]

但是当然你希望这些值在一起并且是唯一的:

Model.pluck(:A, :B).flatten.uniq
#=> [1, 3, 5, 2, 7, 4]

这样做Model.uniq.pluck(:A, :B).flatten是行不通的,因为它只会得到不同的(即 A 和 B 的组合),所以你仍然需要uniq在展平后再次这样做。

于 2013-11-10T17:59:07.677 回答
0
records = []
Model.all.map {|e| records << [e.A, e.B] }
uniq_records = records.flatten.uniq

希望这会对你有所帮助。

谢谢

于 2013-11-10T17:59:23.050 回答