我是一个在rails新手上的红宝石。下面是用户登录后记录会话的代码登录的一部分。我从ruby on rails教程中获得了此代码,并试图学习。在这里我们定义了sign_in方法self.method方法内调用
self.current_user=user
之后我们有两种不同的current_user方法。如果我删除第一个,它会给出错误消息。
为什么我们需要定义方法,如(DEF CURRENT_USER =),如果我们使用像self.current_user=user?
表达为什么要这么做呢?我不明白为什么我们再次定义另一个current_user方法。不能,我们只是把它放在第一个?请看下面。非常感谢。
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
def current_user=(user)
@current_user=user
end
def current_user
@current_user ||= user_from_remember_token
end
全码:
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
很好的解释。一旦你提到'setter'和'getters',整个事情才有意义。 – Ghazaly 2012-06-29 09:17:36