将devise gem添加到一个Rails 4 / mysql项目中(表users已经存在)

14 浏览
0 Comments

将devise gem添加到一个Rails 4 / mysql项目中(表users已经存在)

我是一个完全不熟悉Ruby、Rails、Rake、MySQL(在Ubuntu/bash/command line上)和devise(warden 1.2.3,devise 3.0.4)的新手。我必须继续完成到目前为止的工作:Rails 4项目正在运行,并连接到一个MySQL数据库(已经有用户和数据)。我能够更改控制器和视图。

我必须将devise添加到项目中。我正在阅读这个:https://github.com/plataformatec/devise 。我的类名是User。所以我执行了rails generate devise User

当我执行rake db:migrate时,出现了这个错误:Mysql2::Error: Table 'users' already exists: ... 当然了,因为我已经在项目中有一个users表了。

无论我读了什么(Devise with Rails 4),总是关于创建User模型,而不是如何在现有的User模型上插入devise。

我应该阅读哪个文档?我应该编辑哪个文件来告诉devise“这是我的用户模型和表格”?

0
0 Comments

问题出现的原因是在Rails 4 / mysql项目中添加devise gem时,已经存在名为"users"的表,导致出现错误。解决方法是查找migration文件(位于"/yourproject/db/migrate/"目录下的.rb文件),该文件是通过运行"rails generate devise User"命令生成的("User"可以是任何模型,比如"UserAdmin"或"Client")。这个文件告诉你Devise将对数据库进行的修改(需要哪些内容)。仔细查看这个文件,确保你的数据库满足要求。如果运行"rake db:migrate"命令,rake将尝试修改你的数据库,可能会出现错误(尝试创建一个名为"User"的表,而实际上该表已经存在)。可以修改migration文件,也可以手动更改数据库并删除migration文件(如果你不关心追踪migration的情况),在这种情况下,当然不需要运行"rake"命令。

0
0 Comments

问题出现的原因:

根据提示,问题的原因是在将Devise gem添加到Rails 4 / mysql项目时,users表已经存在。猜测是在创建新的模型时,没有删除旧的迁移。

解决方法:

根据提示,可以按照Devise的"getting-started guide"进行操作,需要根据实际情况智能地应用手动步骤到当前项目中。另外,可以将Devise添加到现有的模型中,而不是创建新的模型。猜测是因为创建了新的模型,但没有删除旧的迁移。

参考链接:[https://github.com/plataformatec/devise#getting-started](https://github.com/plataformatec/devise#getting-started)

0