合并两个红宝石阵列

时间:2014-11-24 21:45:16

标签: ruby ruby-on-rails-3

非常简单,但我需要为系统中的每个管理员用户以及另外一个用户运行一些代码。

我可以得到像这样的管理员用户。

account.users.where(:hr => 1).map(&:id)

和这样的个人用户

user.manager_id

所以如何将这些组合在一起以产生一个独特的数组,因为用户在第二段代码中确定了#34;可能"在第二个被发现。下面的代码似乎有效,但我确信这样做的方式更为优雅

myarray = []
a.employees.where(:hr => 1).each do |user|
  myarray << user.id
end

myarray << user.line_manager_id
myarray.uniq

这似乎是错的,因为我创建了很多对象只是为了获取他们的ID?

2 个答案:

答案 0 :(得分:3)

您可以使用数组“union”方法Array#|

account.users.where(:hr => 1).map(&:id) | [user.manager_id]

答案 1 :(得分:1)

myarray = a.employees.where(:hr => 1).pluck(:id)
myarray << user.line_manager_id

myarray.uniq!

文档:

uniq!

pluck

相关问题