Xia*_*Guo 32 lambda ruby-on-rails
我发现在我看到的所有示例(包括rails文档)中:验证方法的if选项使用Proc.new而不是lambda,例如
class Foo < ActiveRecord::Base
validates_presence_of :name, :if => Proc.new{|f| .... } # why not lambda here?
end
Run Code Online (Sandbox Code Playgroud)
这有什么理由吗?据我所知,lambda
两者似乎都是理想的行为:如果上面提到的选项,我有什么遗漏?
Jit*_*its 36
两者似乎都是理想的行为:如果上面提到的选项,我有什么遗漏?
我猜是这样的:
允许Procs更为可取,因为他们不关心参数的数量.所以我可以轻松地写下面的任何一个:
validates_presence_of :name, :if => Proc.new{|f| f.display_name.blank? } # I care about 'f' here as I need it to check something.
Run Code Online (Sandbox Code Playgroud)
......和:
validates_presence_of :secret_sauce, :if => Proc.new{ MyApp::REQUIRE_SECRET_SAUCE } # I don't care about any arguments being passed in.
Run Code Online (Sandbox Code Playgroud)
这似乎是一件小事,但我想这会增加灵活性.
| 归档时间: |
|
| 查看次数: |
26926 次 |
| 最近记录: |