0

我对它的工作原理有点困惑。我一直在关注一些教程,但我遇到的问题是我如何知道注册的用户具有某些权限?

例如,我喜欢让用户在两个不同的角色之间进行选择:

注册屏幕上的企业或居民

我应该将控制台中的这些角色名称添加到角色表中吗?或者有没有更简单的方法将这两种不同的角色类型添加到我的数据库中?

我已经添加了

  <% for role in Role.find(:all) %>
    <div>
      <%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role) %>
      <%= role.name %>
    </div>
  <% end %>

但在我看来,什么都没有。我假设因为我的数据库中没有特定的角色名称,它没有显示。

控制台是添加角色的最佳方式吗?或者有没有其他方法可以让我在未来使用,我可以很容易地操纵东西?

谢谢!

4

1 回答 1

1

我想到了三种可能的做法:

  1. 创建管理界面以使管理员角色能够通过 MVC 添加其他角色
  2. 如您所述,通过控制台添加新角色
  3. 为您的数据库播种

如果管理员可以访问 Rails 控制台(并假设他们知道如何使用它),那么选项 1 似乎有点过头了,除非您已经将其他管理员功能集成到 MVC 中。

就个人而言,我会选择最后一个选项。它就像通过控制台添加一样简单,但提供了实际提交代码更改历史的额外好处。

名义上最简单的为数据库播种的方法是使用seeds.rb. 在其中,您可以编写在初始或后续种子上正确播种数据库所需的任何命令:

# db/seeds.rb
cities = Role.create([{ name: 'Business' }, { name: 'Resident' }])

然后,从命令行运行rake db:seed. 您的所有语句seed.rb将按顺序运行。如果有任何错误(或其他问题,如重复记录),ActiveRecord 将相应地处理它们(即,您无需担心静默失败)。

需要注意的是,有几个种子库可以促进种子过程。我没有亲自使用过,但Seedbank的工作流程似乎很有意义。

于 2013-06-30T21:43:50.370 回答