情景如下:
我的网站上有一些用户。用户具有角色,此处的相关角色为admin
和normal
。我也有一个模型,我们称之为SomeModel
。
我为该网站创建了一个后端,该后端使用 admin 布局。所有管理员都拥有编辑任何内容的完全权限。
这种关系出现了问题:用户 - >拥有 - > SomeModel 即可。这意味着非管理员用户可以拥有SomeModel
的实例,并且应该能够编辑此实例的数据。
SomeModel
的控制器有一个编辑操作,然后迎合管理员和普通用户。
但是,我不希望普通用户立即使用 admin 布局,我这样做是这样的:
if current_user.admin?
render :layout => 'admin'
end
如果用户不是管理员,则默认为标准布局。我在SomeModel
的所有操作中都有这个,而且它似乎不是一种非常Rails的做事方式。
有更好的方法吗?
答案 0 :(得分:4)
您可以在控制器级别执行此操作:
class MyModelController < ActionController::Base
layout :user_or_admin_layout
def index
# fetching objects
end
private
def user_or_admin_layout
current_user.admin? ? "admin_layout" : "user_layout"
end
end
的rails文档中有更多示例