Ruby on rails Rails 3.2确定每个块中的最后一个元素

Ruby on rails Rails 3.2确定每个块中的最后一个元素,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,给定以下代码,是否有方法测试迭代是否在最后一条记录上?我已经在我想测试的行中给出了一些伪代码 @shipments.each do |shipment| puts shipment.id puts shipment.desc unless shipment.last? #is there a way to do this line? puts "that was the last shipment" end end 没有内置方法,但最接近这种方法的可能是: unle

给定以下代码,是否有方法测试迭代是否在最后一条记录上?我已经在我想测试的行中给出了一些伪代码

@shipments.each do |shipment|
  puts shipment.id
  puts shipment.desc

  unless shipment.last?  #is there a way to do this line?
    puts "that was the last shipment"
  end
end

没有内置方法,但最接近这种方法的可能是:

unless shipment == @shipments.last
这假设您使用的是一组ActiveRecord结果,因为如果
@shippings
是一个数组,如
[1,2,3,2]
2
将匹配第二个元素和最后一个元素。

使用该方法,您可以做类似的事情,但我相信应该有更好的方法来实现这一点

@shipments.each do |shipment|
  puts shipment.id
  puts shipment.desc

  unless shipment == @shipments.last  #is there a way to do this line?
    puts "that was the last shipment"
  end
end

您可以在控制台上尝试:
Array.methods
,然后发现您不能。很明显,您不能。这就是我在这里问的原因。一种方法是从循环内部删除此条件,运行完整的循环,并在使用
@shippings之后立即删除。last
我不能这样做,因为我在块内做额外的工作,我只希望在不是循环的最后一次迭代时发生