我已安装Devise,现在想删除它,包括它生成的所有文件。我该怎么做?
答案 0 :(得分:95)
我正在考虑今天解决同样的问题,因为没有回答,给它一个去=)
模型
如果默认安装,Devise将生成User
模型。
删除devise
下的行。这就是我的样子。
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
在attr_accessible
,您可以删除email
,:password
,password_confirmation
和remember_me
,如果您不再需要它们。
<强>视图强>
默认的Devise安装不会在app
文件夹中生成视图。如果您为Devise生成了覆盖视图,则可以通过运行rails destroy devise:views
(Rails 3)来删除它们。
通常,所有视图都存储在app/views/devise
。
<强>控制器强>
默认情况下,Devise也不会生成任何控制器。如果您进行了任何覆盖,则很可能称为registrations_controller
。在项目中搜索继承Devise::RegistrationsController
类的控制器。
此外,如果您按照Devise的wiki和Monkey-ed来添加重定向方法等,请注意用于重定向用户的after_sign_in_path_for
,store_location
等方法。
<强>迁移强>
如果您通过其生成器安装了Devise,请留意迁移create_users
。如果您不再需要它,请在迁移中使用drop_table :users
来摆脱它。
我假设大多数人都希望保留他们的用户模型。如果您正在使用Devise&lt; 2.0,迁移由助手完成。从Gemfile
中删除Devise后,Rails将无法理解下面的帮助程序并抛出错误,例如,当您尝试在另一个框上重新运行这些迁移时。这些助手是:
t.database_authenticatable
t.recoverable
t.rememberable
t.trackable
t.encryptable
t.confirmable
t.lockable
t.token_authenticatable # => becomes t.string :authentication_token
对于确切的列,下面是对Devise生成的列的引用。
https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style
上面的指南列出了Devise使用帮助程序生成的字段。您应该能够查看列表和模型(例如,在控制台中调用User
),生成删除这些列的迁移。
<强> BUT ... 强>
有点不幸的是,为了保持一致性,我们必须使用上面的指南将迁移转换为不使用帮助程序,然后生成迁移以删除它们。这适用于迁移历史记录的一致性,否则运行迁移的任何人都可能尝试调用不存在的帮助程序。此外,迁移以删除字段也会期望字段存在。
或者,可能是压缩迁移并依赖schema.rb
/ structure.sql
进行架构的最新状态的好时机。即使在删除迁移后,您也可以随时使用rake db:schema:load
重新创建开发数据库。
初始值设定项和区域设置
删除devise.rb
中的config/initializers
和devise.en.yml
中的config/locales
。
<强>路线强>
删除所有devise_for
行。这些将在删除gem后引发错误。
宝石文件
Yaay。全部圆顶,从您的gemfile中删除行gem 'devise'
。
答案 1 :(得分:8)
使用生成器也可以删除配置文件(步骤2),因此整个过程将是(引用以前的答案):
rake db:rollback VERSION=<insert the version number of the migration>
rails destroy devise:install
rails destroy devise User
(将“用户”替换为您的模型名称)答案 2 :(得分:2)
在我的情况下,我有两个模型用户和管理员,我坚持使用Devise,但我与ActiveAdmin有一个名称冲突问题,需要我删除Admin模型。但是因为在设计中有太多关于Admin的引用,我不得不采取以下步骤。不过,我认为它也回答了上面的原始问题。我相信这样做的正确方法是:
1.找到用户模型的设计迁移并将其回滚 [重要提示:如果您不想删除与Devise关联的用户表,则跳过此步骤] :
rake db:rollback VERSION=<insert the version number of the migration>
例如:
rake db:rollback VERSION:20110430031806
2.运行此命令以删除Devise和相关文件。
rails destroy devise Admin
(如果Admin是具有用户帐户的模型的名称)。
这会产生此输出:
invoke active_record
remove db/migrate/20110430031806_devise_create_admins.rb
remove app/models/admin.rb
invoke test_unit
remove test/unit/admin_test.rb
remove test/fixtures/admins.yml
route devise_for :admins
3.要完全删除Devise,您需要删除模型,控制器和视图中对它的所有引用。这是手工工作。上面的答案为找到这个残余提供了很好的细节,但对于我的目的来说是不完整的。我希望这有助于其他人。
答案 3 :(得分:1)
我发现daemonsy的回复是非常有帮助。以下是您要做的其他一些事情。
更换设计
<强>测试强>
答案 4 :(得分:0)
这对我有用!
1:
rails d devise User
这将删除模型和路线。2:
rails d devise:install
,这会破坏devise.rb
并devise.en.yml
个文件。3:创建迁移,例如:
rails g migration drop_user_table
。一世 已使用drop_table :users , force: :cascade
,force: :cascade
;需要 照顾PG :: DependentObjectsStillExist:错误:
如果其他表依赖于用户表,则会发生这种情况。