Я следил за трансляциями Райана Бейтса, чтобы заставить систему аутентификации администратора отображать определенные параметры, если в данный момент зарегистрированный пользователь является администратором или нет.
Def admin?Метод работает, но только если я установил в коде значение true или false.Значение True отображает все параметры, а значение false скрывает их.
Я пробовал: current_user[:username] == 'dave'
, который работает до тех пор, пока пользователь не переходит на другого пользователя, а затем не выдает ошибку метода.
и session[:username] == 'dave'
не дает ошибок, но устанавливает админ?метод false для всех пользователей, включая 'dave'.
Что я должен поместить в моего администратора?метод?В идеале я хотел бы увидеть, совпадает ли имя пользователя и пароль, а затем возвращает true.
Любая помощь будет принята с благодарностью!
контроллер приложений
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
helper_method :admin?
protected
def authorize
unless admin?
flash[:error] = "not authorized!"
redirect_to venues_path
false
end
end
def admin?
true
#false
end
end
маршруты
Go::Application.routes.draw do
get "log_in" => "sessions#new", :as => "log_in"
get "log_out" => "sessions#destroy", :as => "log_out"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :sessions
resources :users
end
контроллер сессий
класс SessionsController
def create
user = User.authenticate(params[:username], params[:password])
if user
session[:user_id] = user.id
redirect_to venues_path, :notice => "Logged in!"
else
flash.now.alert = "Invalid username or password"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to venues_path, :notice => "Logged out!"
end
end