class User < ActiveRecord::Base
before_validation :ensure_login_has_a_value
validates :login, :email, presence: true
protected
def ensure_login_has_a_value
if login.nil?
self.login = email unless email.blank?
end
end
end
为什么会有效但
protected
def ensure_login_has_a_value
if login.nil?
#self.login = email unless email.blank?
# the change
login = email unless email.blank?
end
end
不起作用?
答案 0 :(得分:1)
在第二个中,
login = email unless email.blank?
创建本地变量调用login
并为其分配email
第一个实际上将它分配给模型的属性。
答案 1 :(得分:-1)
当您使用login
时 - 它使用ActveRecord提供的getter,如果您想使用login=
,则应将登录声明为attr_accessible