2012-08-02 74 views
1

我想解决我在我的网站上设置管理员时遇到的问题。这是我的路线的简单版本。设置管理员用户来编辑用户,文章,协作者

resources :users 
    resources :articles 
    resources :collaborators 
end 

resources :admin 

Admin用户是非常相似的合作者,因为他们可以编辑和创建文章,但管理员有能力也c.r.u.d.每个用户的用户,协作者和文章。协作者只能使用c.r.u.d.与已被分配到的用户相关联的文章。

有些令人困惑的部分是如何设置Admin用于CRUD操作的控制器和视图。截至目前我试图实现的方式是在admin /中创建单独的CRUD视图。问题在于功能对于协作者来说是如此类似,我觉得它可能是DRYER。

任何人都知道实现这样的最基本的方式?谢谢!

更新:我想更新此说,这是超级简单的谷歌管理工具的轨道。我更想知道如何在没有管理工具的情况下实现这一点,或者如果这听起来像是一个坏主意,为什么?

+1

你有没有考虑过像[CanCan](https://github.com/ryanb/cancan/)这样的授权宝石,或者像[The Role](https://github.com/the - 老师/ the_role)? 通过使用这些,您可以为所有角色类型提供一个视图,并让宝石帮助您进行授权。 – 2012-08-02 07:52:41

+0

我并不太在意授权,因为我是关于编辑内容的视图结构。我一定会考虑CanCan和身份验证的角色,但希望为管理员找到一个好的结构。 – botbot 2012-08-03 07:42:45

回答

1

我想出的答案是创建一个管理员字段为true/false的合作者。我也建立了CanCan,它的工作非常好。

这里是我的康康舞ability.rb

高清初始化(用户)

if user.admin? 
    can :manage, :all 
else 
    can :manage, Article, :id => user.article_id 
    cannot :index, Article 
end 

我只是用“用户”,因为它更具可读性,比合作者更短,基本上用户...

0

尝试ActiveAdmin (http://activeadmin.info/)。我认为这是为您的应用程序构建管理员后端最简单的方法。

+0

虽然你可能是完全正确的,我应该使用这样的系统,但我对此并不感到兴奋的部分原因是因为这些系统中的某些系统有如此多的花里胡哨......那么当它需要定制时这是一个痛苦。我一定会看看它是否能满足我的基本需求。理想情况下,我希望与普通用户或协作者拥有*几乎相同的界面来创建用户,文章和协作者。 – botbot 2012-08-02 07:44:24