-1

如果没有 eval,这将如何工作

%w{user_id for_whom_id category_id product_status_id}.each do |f|
  code = <<-C
  it "should fail validation with no #{f}" do
    should_fail_on_validation { |p| p.#{f} = nil }
  end
  C
  eval code
end

?

4

1 回答 1

6

这应该有效:

%w{user_id for_whom_id category_id product_status_id}.each do |f|
  it "should fail validation with no #{f}" do
    should_fail_on_validation { |p| p.public_send "#{f}=", nil }
  end
end

如果可能,最好避免评估。在这种情况下,没有必要。

于 2012-12-17T21:18:48.510 回答