我有一個Rails 3.2應用程序需要用戶登錄(current_user)才能訪問事件頁面,這是子域名。我正在使用設計進行身份驗證。如何讓未登錄的用戶只訪問一次受限制的頁面?
如果我提供了直接鏈接到它,是否有任何方法允許用戶一次性訪問活動頁面?如果他們嘗試訪問不同的活動頁面,或者他們在將來的日期離開並回到同一活動頁面,我會希望他們被提示登錄(或註冊)。
我已經觀看了railscasts的訪客帳戶,但似乎用戶可以繼續以訪客身份登錄,而無需使用此方法註冊。
這裏是我的事件控制器代碼:
def show
@event = Event.find_by_name(request.subdomain)
if params[:id].present?
@event = Event.find(params[:id])
end
# if @event.present? and @event.videos.present?
@video = Video.find_by_id(params[:video]) || @event.videos.first
# else
# @video = @event.videos.first
# end
# @json = Event.all.to_gmaps4rails
if @user = current_user
else
flash[:alert] = "Please sign in first"
redirect_to sign_up_url(:subdomain => false)
end
end
感謝所有幫助/意見...
編輯:只是提供一些更多的上下文:
我會試圖推動很多用戶每週訪問這一個活動頁面,如果我只是通過社交媒體和電子郵件發送一個鏈接等,我不確定將單獨的哈希值硬編碼到網址中是否可行/實用。
由於用戶將點擊此鏈接並直接進入相關頁面,因此不會觸發創建單獨的訪客模型的操作,所以我認爲答案必須基於會話,將一些列添加到現有的用戶模型,但確保每個用戶只使用一次。我想也許一個IP地址可以工作?
如何設置'current_user'?您是否在使用Devise進行身份驗證? – zeantsoi
是的,我正在使用設計來設置current_user – jfdimark
瞭解。請參閱下面我提出的解決方案。 – zeantsoi