设计密切注册但使用管理员帐户种子数据库

时间:2015-04-07 14:43:32

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我希望完全关闭我的注册系统(暂时)并且只有1个管理员帐户可以进入数据库或播种。

这可能与Devise有关吗?或者关闭注册还会关闭种子/佣金任务,我的管理员用户在其中吗?

我目前有一个具有典型设计设置的用户模型,其管理列是布尔值 - 我目前通过进入rails控制台并手动更改它来设置该列中的该列。

任何帮助都会很棒!

由于

2 个答案:

答案 0 :(得分:1)

devise wiki中有一个详细的步骤;但基本上你可以跳过生成注册路线:

devise_for :users, :skip => :registrations

通过无法注册,这将使其成为单一用户系统。

这需要使用种子文件或通过控制台创建第一个用户。

或者您可以创建自己的控制器来处理在第一个用户之后切断的注册:

devise_for :users, :controllers => {:registrations => "registrations"}

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
  def create
    if User.any?
      redirect_to root_path, alert: 'Only one user allowed!' and return
    end
    super
  end
end

除非您的种子/ rake任务正在做一些非常奇怪的事情,比如自动化Web浏览器,否则这将对您的种子/ rake任务没有影响,因为它们通常涉及通过模型直接操作数据库并且根本不通过控制器:

# Example of seeding an admin user:
admin = User.create_with(surename: 'Doe', forename: 'John').find_or_create_by(email: 'admin@example.com')
admin.add_role(:admin)

答案 1 :(得分:0)

您应该能够删除用于注册的设计路线并仍然在用户中播种。只要您仍然拥有会话的设计路线,该用户就可以登录/注销。