只需在Ruby(Rails)中向数组添加新的(不同的)元素?

时间:2013-11-10 17:45:15

标签: sql ruby-on-rails ruby arrays

我想在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}

感谢您的帮助!

2 个答案:

答案 0 :(得分: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压扁后。

答案 1 :(得分:0)

records = []
Model.all.map {|e| records << [e.A, e.B] }
uniq_records = records.flatten.uniq

希望这会对你有所帮助。

由于