在 Rails 中创建 admin/user 个帐户的工作流程
Workflow for admin/user accounts creation in Rails
我正在 Rails 的 Ruby 中构建事件注册系统。我需要管理员用户和普通用户。是否有任何最佳实践来手动创建管理员用户并且不让任何随机的人 "Sign Up" 作为管理员?另外,一般情况下有什么方法可以防止注册吗?
(我正在考虑使用 Devise gem)
选项#1
对于大多数情况,我发现的最简单的方法是简单地向用户模型添加一个 admin
(布尔值)属性(我通常使用 Devise,但这适用于任何 User
型号):
# db migration
class AddAdminToUsers < ActiveRecord::Migration
def change
add_column :users, :admin, :boolean, default: false
end
end
然后,感谢 ActiveRecord,您将在 User
模型上自动拥有一个 admin?
方法:
<% if current_user.admin? %>
<%= # super-secret admin-only option %>
<% end %>
然后,您的注册页面将与之前相同,新用户将默认为 admin = false
。然后,您可以根据需要将 "promoting" User
s 实现到 admin = true
...例如在应用管理区域的 Admin::UsersController#edit
视图中。
选项#2
但是,如果您需要管理员用户拥有自己的 views/routes/logic/etc,则可能值得将它们分成自己的 Admin
模型(设计也支持此功能)。这将为您提供两个独立的模型,每个模型都有自己的路由、视图和控制器。一个缺点是将 User
提升为 Admin
意味着实际上将记录从一个 table 移动到另一个。此选项有很多开销,但如果您需要单独的逻辑,最终会变得更加清晰。
使用哪种模式最终还是要看你自己的场景。如果您需要单独的 views/routes/logic 来管理管理员用户,请选择 #2。如果您可以只检查 admin
属性,那么 #1 就简单多了。
我正在 Rails 的 Ruby 中构建事件注册系统。我需要管理员用户和普通用户。是否有任何最佳实践来手动创建管理员用户并且不让任何随机的人 "Sign Up" 作为管理员?另外,一般情况下有什么方法可以防止注册吗?
(我正在考虑使用 Devise gem)
选项#1
对于大多数情况,我发现的最简单的方法是简单地向用户模型添加一个 admin
(布尔值)属性(我通常使用 Devise,但这适用于任何 User
型号):
# db migration
class AddAdminToUsers < ActiveRecord::Migration
def change
add_column :users, :admin, :boolean, default: false
end
end
然后,感谢 ActiveRecord,您将在 User
模型上自动拥有一个 admin?
方法:
<% if current_user.admin? %>
<%= # super-secret admin-only option %>
<% end %>
然后,您的注册页面将与之前相同,新用户将默认为 admin = false
。然后,您可以根据需要将 "promoting" User
s 实现到 admin = true
...例如在应用管理区域的 Admin::UsersController#edit
视图中。
选项#2
但是,如果您需要管理员用户拥有自己的 views/routes/logic/etc,则可能值得将它们分成自己的 Admin
模型(设计也支持此功能)。这将为您提供两个独立的模型,每个模型都有自己的路由、视图和控制器。一个缺点是将 User
提升为 Admin
意味着实际上将记录从一个 table 移动到另一个。此选项有很多开销,但如果您需要单独的逻辑,最终会变得更加清晰。
使用哪种模式最终还是要看你自己的场景。如果您需要单独的 views/routes/logic 来管理管理员用户,请选择 #2。如果您可以只检查 admin
属性,那么 #1 就简单多了。