jan*_*szm 3 ruby activerecord ruby-on-rails-3
我注意到几乎所有的人都使用Proc.new而不是lambda(我想是因为它关心/不关心arity),并且通常将当前实例作为参数传递。但是,我检查了一下,即使没有| instance |,它也可以正常工作 作为arg通过。参见下面的例子
class SomeModel < ActiveRecord::Base
has_many :associated_objects
before_save :do_something, if: -> { associated_objects.empty? }
end
Run Code Online (Sandbox Code Playgroud)
根据官方指南和互联网上的大多数帖子,看来我应该写
before_save :do_something, if: Proc.new { |instance| instance.associated_objects.empty? }
Run Code Online (Sandbox Code Playgroud)
我的使用->和无参数的示例有问题吗?这类似于跳过自身作为self.some_method内部模型代码中的接收者并使用隐式接收者。
| 归档时间: |
|
| 查看次数: |
1252 次 |
| 最近记录: |