关于同名ruby方法的帮助
我目前正在通过r]进行工作,我很难理解当前两种用户方法之间的区别。在我的另一个方法sign_In中,有一个调用self.current_user的方法,但我很难理解调用了哪个current_user以及另一个current_user方法实际在做什么关于同名ruby方法的帮助,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我目前正在通过r]进行工作,我很难理解当前两种用户方法之间的区别。在我的另一个方法sign_In中,有一个调用self.current_user的方法,但我很难理解调用了哪个current_user以及另一个current_user方法实际在做什么 module SessionsHelper def sign_in(user) cookies.permanent.signed[:remember_token] = [user.id, user.salt] self.curre
module SessionsHelper
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 signed_in?
!current_user.nil?
end
private
def user_from_remember_token
# using the * makes us pass two values [id,salt]
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil,nil]
end
end
当您指定对象的当前用户属性时,将调用
current\u user=
方法;当您不指定对象的当前用户属性时,将调用current\u user
方法
因此,
self.current\u user=user
调用current\u user=
while!当前用户.nil?
调用当前用户
区别在于当前用户=
实现了相等运算符。因此,当您执行current\u user=something
时,它实际上是在调用current\u user=(something)
与当前用户相反,当前用户只是一个“获取者”
我读过Ruby访问器。这是赋值方法 像
obj.current\u user=some\u user\u object
调用以下方法
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
下面的方法返回当前用户的对象。如果@current_user为null,它将为其分配用户对象并返回它
some\u user=obj。当前用户调用以下方法
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
如果我只是在调用,我甚至需要current\u user=
方法吗!当前用户。无?
?因为current\u user
方法不检索用户,或者只是将@current\u user
设置为nil。@凯文:如果登录被修改为分配给@current\u user,那么您可以在该代码中删除current\u user=方法。但是如果您想创建“模拟”用户的功能,您会发现current_user=非常有用—您以自己的身份登录,但假装是其他人。(此功能有助于调试客户支持问题。)