合并两个ruby数组
非常简单,但我需要为系统中的每个管理员用户加上1个其他用户运行一些代码 我可以得到这样的管理员用户合并两个ruby数组,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,非常简单,但我需要为系统中的每个管理员用户加上1个其他用户运行一些代码 我可以得到这样的管理员用户 account.users.where(:hr => 1).map(&:id) 个人用户也是这样 user.manager_id 那么我如何把这些放在一起生成一个唯一的数组,因为在第二段代码中标识的用户“可能”在第二段代码中找到。下面的代码似乎可以工作,但我相信有一种更优雅的方法可以做到这一点 myarray = [] a.employees.where(:hr => 1)
account.users.where(:hr => 1).map(&:id)
个人用户也是这样
user.manager_id
那么我如何把这些放在一起生成一个唯一的数组,因为在第二段代码中标识的用户“可能”在第二段代码中找到。下面的代码似乎可以工作,但我相信有一种更优雅的方法可以做到这一点
myarray = []
a.employees.where(:hr => 1).each do |user|
myarray << user.id
end
myarray << user.line_manager_id
myarray.uniq
myarray=[]
a、 员工。其中(:hr=>1)。每个do |用户|
myarraymyarray=a.employees.where(:hr=>1).pull(:id)
myarraymyarray=a.employees.where(:hr=>1).pull(:id)
myarray您可以使用数组“union”方法:
您可以使用数组“union”方法:
uniq如果数组已经是唯一的,那么code>似乎是一个错误的选择。e、 g.[1,2,3].uniq!#=>nil
假设myarray.uniq!的返回值代码>未使用,返回的内容无关紧要。重复ID已被丢弃,或者myarray
与调用前相同。uniq如果数组已经是唯一的,那么code>似乎是一个错误的选择。e、 g.[1,2,3].uniq!#=>nil
假设myarray.uniq!的返回值代码>未使用,返回的内容无关紧要。重复ID已被丢弃,或者myarray与通话前相同。回答很好,不过解释一下会很好。尤其是由于union(|
)操作符不是人们经常使用的。谢谢,@engineersmnky。指向该方法的链接正在进行…:-)不要使用@Stefan来代替map(&:id)
use,这可能与Rails有关,这对我来说是陌生的,但我相信你的话,它是<代码>id
获取id属性,而不实例化任何记录。(“这似乎是错误的,因为我创建了很多对象只是为了获取它们的ID?”)回答得很好,不过解释一下会很好。尤其是由于union(|
)操作符不是人们经常使用的。谢谢,@engineersmnky。指向该方法的链接正在进行…:-)不要使用@Stefan来代替map(&:id)
use,这可能与Rails有关,这对我来说是陌生的,但我相信你的话,它是<代码>id
获取id属性,而不实例化任何记录。(“这似乎是错误的,因为我创建了很多对象只是为了获取它们的ID?”)
myarray = a.employees.where(:hr => 1).pluck(:id)
myarray << user.line_manager_id
myarray.uniq!
account.users.where(:hr => 1).map(&:id) | [user.manager_id]