Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails I';I’我想用Rolify替换我自己创建的角色代码,但我不确定如何处理删除/撤消现有迁移等问题_Ruby On Rails_Rails Activerecord_Rolify - Fatal编程技术网

Ruby on rails I';I’我想用Rolify替换我自己创建的角色代码,但我不确定如何处理删除/撤消现有迁移等问题

Ruby on rails I';I’我想用Rolify替换我自己创建的角色代码,但我不确定如何处理删除/撤消现有迁移等问题,ruby-on-rails,rails-activerecord,rolify,Ruby On Rails,Rails Activerecord,Rolify,标题几乎说明了这一切,但我会尝试更详细一点。我基本上创建了自己的基于角色的权限系统,然后才知道基于角色的权限是一个“已解决的问题”,Rolify是一个比我创建的更好的解决方案。我想用Rolify代码替换我的代码,但仍然会遇到需要我运行的错误 rake db:migrate 然后简单地告诉我数据库中已经存在一个角色表,等等。我只想创建一个迁移来删除角色表,但是这是正确的做法吗?我的建议是首先使用以下方法来确保实际删除角色表是正确的解决方案 rake db:migrate:down VERSION

标题几乎说明了这一切,但我会尝试更详细一点。我基本上创建了自己的基于角色的权限系统,然后才知道基于角色的权限是一个“已解决的问题”,Rolify是一个比我创建的更好的解决方案。我想用Rolify代码替换我的代码,但仍然会遇到需要我运行的错误

rake db:migrate

然后简单地告诉我数据库中已经存在一个角色表,等等。我只想创建一个迁移来删除角色表,但是这是正确的做法吗?

我的建议是首先使用以下方法来确保实际删除角色表是正确的解决方案

rake db:migrate:down VERSION=MigrationTimestamp

您始终可以使用“up”而不是“down”运行相同的命令来重新创建表。当然,如果您丢弃该表,那么您将丢失其中的所有记录。如果需要,请确保备份数据

我个人的看法是,如果删除角色表是正确的解决方案,那么实际上只需删除创建角色表的初始迁移以及更新该表的任何迁移。然后,创建一个rake任务,仅用于下一版本,以删除roles表。这样,如果其他人将来需要处理您的代码库,他们将不会有创建表的迁移,也不会有在启动和运行时删除同一表的迁移。迁移过程中发生的情况的历史记录对于将来的工作来说并不是必需的,只要您记录到授权gem的升级已经完成,并且结果是您不再需要roles表

在这个问题上,我使用声明式授权gem,发现它比Rolify更有效。我有一个单独的角色表,它保持不变,并与D.a.gem配合良好。这绝对值得一看