在ruby中查找数组和活动记录变量之间的相同值

SD1*_*990 2 ruby activerecord ruby-on-rails

应该是一个简单的,可能有点复杂的标题.

我有一个包含记录的变量:

@record = Records.all
Run Code Online (Sandbox Code Playgroud)

和一个包含一些task_id的数组:

@array #has for e.g. [1,2,3]
Run Code Online (Sandbox Code Playgroud)

我想做什么检查@records中记录列表的task_id列,看它们是否包含数组中的任何数字.如果他们这样做,那么我希望将这些数字放入另一个数组中.

我知道这很简单,但我一直很困惑,因为我对ruby语法很新.

Mat*_*att 6

这应该适合你:

@records.map(&:task_id) & @array
Run Code Online (Sandbox Code Playgroud)

这构建了两个列表(task_ids和array)的交集.您可以在控制台上尝试此示例(我希望这有助于清除它的工作原理):

irb(main):008:0> a =  [1,2,3,4]
=> [1, 2, 3, 4]
irb(main):009:0> b = [3,4,5,6]
=> [3, 4, 5, 6]
irb(main):010:0> a & b
=> [3, 4]
Run Code Online (Sandbox Code Playgroud)