2013-02-10 3 views
0

Я сейчас пользователь: is_logged? в мой контроллер, чтобы проверить, зарегистрирован ли пользователь, но я хочу, чтобы некоторые области были ТОЛЬКО для пользователей с разметкой.Before_filter перевернутый?

private 
    def is_logged? 
    !!current_user 
    end 

    private 
    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

    helper_method :is_logged? 
    helper_method :current_user 

Есть ли способ сделать оценку before_filter противоположной.

В настоящее время: is_logged? возвращает true, это заносится в журнал и false в противном случае. Я хочу, чтобы он вернул true, если он не был зарегистрирован и наоборот.

Спасибо!

ответ

0

Я уверен, что есть способ упростить это, но для учебных целей я думаю, что это будет сделано.

def not_logged_in? 
    if defined? current_user 
    current_user.nil? 
    else 
    true 
    end 
end 
1

Я хотел бы предложить, что вы просто держать один метод для определения того, зарегистрирован пользователь или нет, а не дублировать код с logged_in? и not_logged_in? методами. Для простоты и удобства чтения, возможно, что-то вроде:

private 

    def logged_in? 
    !current_user.nil? 
    end 
    helper_method :logged_in? 

Затем, когда вы хотите сделать что-то с пользователями, которые являются авторизованы:

if logged_in? 
    # do something for logged in users 
end 

И сделать что-то конкретно с пользователями, которые являются не не зарегистрированы:

unless logged_in? 
    # do something for users who are not logged in. 
end 
Смежные вопросы