【发布时间】:2011-06-09 18:54:44
【问题描述】:
在 Rails 中,blocks can be used as callbacks,例如:
class User < ActiveRecord::Base
validates_presence_of :login, :email
before_create {|user| user.name = user.login.capitalize
if user.name.blank?}
end
当这样使用块时,break 和 return 有什么用吗?我问是因为通常在一个块中,break 将跳出循环,return 将从封闭方法返回。但是在回调上下文中,我无法理解这意味着什么。
The Ruby Programming Language 建议 return 可能会导致 LocalJumpError 但我无法在 Rails 回调中重现这一点。
编辑:使用下面的代码,我希望有一个LocalJumpError,但return 所做的只是停止其余的回调执行。
class User < ActiveRecord::Base
validates_presence_of :login, :email
before_create do |user|
return
user.name = user.login.capitalize
end
【问题讨论】:
标签: ruby-on-rails ruby block