Являясь новым для рельсов, я хотел получить советы от сообщества о том, как настраивать запретные зоны. Я только начал использовать Devise и прочитал о нескольких разных методах для перенаправления/рендеринга представлений на основе того, был ли пользователь зарегистрирован или нет, и мне интересно, как лучше всего это сделать.Каковы наилучшие практики при проектировании запретных зон в рельсах?
В настоящее время, когда я хочу, чтобы вошедший в систему пользователь имел другое представление о странице, а затем не зарегистрированный пользователь, я обрабатывал его в контроллере. Например:
class CollectionsController < ApplicationController
before_filter :authenticate_user!, except: [:index, :show]
def index
@collections = Collection.all
if current_user
render :admin
else
render :index
end
end
end
В этом случае :admin
и :index
соответствуют views/collections/admin.html.haml
и views/collections/index.html.haml
соответственно. Административный вид похож на макет на индексный, но имеет ссылки на редактирование, обновление, создание и т. Д.
Это лучший способ обойти это?
РЕДАКТИРОВАТЬ: Я также рассматривал возможность использования самозащиты, как CanCan, но не был уверен, что это будет излишним.
Я решил пойти с CanCan, и это здорово! Действительно легко реализовать и использовать. –
Мой единственный вопрос об этом методе, так как это кошерный, чтобы иметь такую логику в представлении, если вы пытаетесь как можно скорее MVC? –