2010-10-20 2 views
0

анти-шаблон, который я хочу, чтобы убить это:В Rails, каковы некоторые хорошие шаблоны дизайна, которые упрощают обработку многих состояний?

- if !current_user 
    # do something 
- if !member 
    # do something else 
- if admin 
    # blah blah blah 
- else 
    # Bored now. 

Я подозреваю, что ответ что-то делать с видом хелперов и обертонов, но мне интересно, что некоторые из лучших практик и шаблонов проектирования являются. Благодаря!

ответ

0

Я много от моего контроллера:

before_filter :require_user 

def require_user 
    unless current_user 
    store_location 
    flash[:notice] = "You must be logged in to access this page" 
    redirect_to login_url 
    return false 
    end 
end 

Но в зависимости от роли (администратор, пользователь, член) вы могли бы выполнить ту же задачу. Таким образом, перед представлением представления вы будете контролировать, где они будут направлены.

+0

Спасибо, Поездка, я предполагаю, что мой вариант использования - это больше о том, хочу ли я показывать пользователям серые кнопки, отключенную кнопку, синюю кнопку или вообще не кнопку, основанную на состоянии текущего пользователя. Это не столько проблема разрешений, либо контроль доступа. – a10s

+0

Не могли бы вы выполнить одну и ту же задачу через контроллер через файл before_filter. И в зависимости от случая метода, это относится к тем, какие кнопки они видят в представлении? – Trip

+0

Возможно, я мог бы, но мне не нравится идея ввода кода, связанного с представлением в контроллерах. Я проверяю разрешения в контроллере, но в моем случае для пользовательского интерфейса есть много состояний, которые не имеют никакого отношения к разрешениям, связанным с тем, что пользователь еще или еще не сделал. В этой ситуации я хочу переключиться в зависимости от состояния пользователя и отобразить разные частичные, использовать разные имена классов CSS или просто отобразить другой текст. – a10s