【发布时间】:2013-11-21 16:46:49
【问题描述】:
我关注Ruby on Rails Tutorial。代码已给出,
在会话助手中:
def sign_in(user)
remember_token= User.new_remember_token
cookies.permanent[:remember_token]=remember_token #save the unencrypted token to browser cookies
user.update_attribute(:remember_token, User.encrypt(remember_token))
self.current_user= user
end
def current_user=(user)
@current_user= user
end
def current_user
encrypted_token=User.encrypt(cookies[:remember_token])
@current_user ||=User.find_by(remember_token:encrypted_token)
end
def sign_in?
!current_user.nil?
end
在导航器视图中:
<% if sign_in? %>
<li><%= link_to "Profile",current_user %></li>
<% end %>
我的问题是:
- 每次访问者刷新导航器时是否都会访问数据库?
- 我能否通过在视图中使用@current_user 并将
sign_in?函数更改为:
def sign_in? if @current_user.nil? !current_user.nil? else false end end
3.解决这个问题的最佳实践是什么?
提前致谢。
【问题讨论】:
标签: ruby-on-rails ruby database cookies