0
我有一個帶有設計的rails應用程序。當用戶登錄(user_signed_in?
)時,我可以訪問它並檢索它的信息(例如current_user.last_search
)。但我也想要一種方法來保存鏈接到會話的一些信息,例如用戶最後一次搜索。保持鏈接到未登錄用戶的信息un rails
現在,我有這樣的代碼:
<% if user_signed_in %>
<%= current_user.last_search %>
<% else %>
<%= get_last_seach # some method to get the last search when user is not signed in %>
這太冗長。我需要在很多地方這樣做,並且使用其他變量而不是last_search
。
我願做這樣的事情,而不是:
<%= my_current_user.last_search %>
哪裏my_current_user
是當用戶登錄的設計CURRENT_USER,否則它與信息鏈接到當前會話(通過Cookie)的用戶可用。
my_current_user
會表現得像是:
# user starts new session on the website
user_signed_in? # false
my_current_user # Object User
my_current_user.last_search # ''
#user searches "pancakes"
user_signed_in? # false
my_current_user # Object User
my_current_user.last_search # 'pankakes'
#user logs in
user_signed_in? # true
my_current_user # Object User
my_current_user.last_search # 'pankakes'
#user logs off
user_signed_in? # false
my_current_user # Object User
my_current_user.last_search # 'pankakes' or '', I don't really mind here
這是一個很好的形式給出?你會建議什麼? 如果這是一個好主意,如何實現它?
如果我想從控制器和視圖中訪問它,該怎麼辦? – 2013-05-14 08:45:54
您可以在控制器中包含應用程序助手。如果您只需要在控制器中使用它,請將其添加到基礎控制器類中。 – 2013-05-14 08:48:03
它看起來像「鐵軌方式」。但是使用'current_user.name'訪問用戶的名字並且'last_search'的** same **用戶的最後一次搜索感覺更爲奇怪。 – 2013-05-14 08:49:06