将方法应用于多个对象

Applying a method to multiple objects

test "pass this test" do
  @item_one.change
  @item_two.change
  @item_one.reload
  @item_two.reload
  assert @item_one.changed?
  assert @item_two.changed?
end

我试图把它弄干

test "pass this test" do
  (@item_one, @item_two).change
  (@item_one, @item_two).reload
  assert (@item_one, @item_two).changed?
end

显然行不通,因为我们将在数组上调用该方法。同时,一个循环对于 2 个对象来说似乎太乏味了。

我在找什么?

我认为你想要的并不存在。我能想到的最接近的是

[@item_one, @item_two].map {|x| x.change } 

这个怎么样?

test "pass this test" do
  [@item_one, @item_two].each(&:change)
  [@item_one, @item_two].each(&:reload)
  assert [@item_one, @item_two].map(&:changed?).all?
end

each(&:...)each do ... end 的快捷方式 map(&:...)map do ... end.

的快捷方式