rei*_*als -1 ruby metaprogramming
如果没有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
Run Code Online (Sandbox Code Playgroud)
?
这应该工作:
%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
Run Code Online (Sandbox Code Playgroud)
如果可能的话,最好避免使用eval.在这种情况下,没有必要.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |