首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有创建Rolify表

没有创建Rolify表
EN

Stack Overflow用户
提问于 2014-04-25 07:35:25
回答 2查看 2.2K关注 0票数 12

在包中安装了gem(gem 'rolify')之后,我使用以下命令生成了该文件,

代码语言:javascript
复制
rails g rolify Role User

下面的文件被创建,

代码语言:javascript
复制
invoke  active_record
create    app/models/role.rb
invoke    rspec
create      spec/models/role_spec.rb
invoke      factory_girl
create        spec/factories/roles.rb
insert    app/models/role.rb
create    db/migrate/20140425070708_rolify_create_roles
insert  app/models/user.rb
create  config/initializers/rolify.rb

然后,我给了

代码语言:javascript
复制
rake db:migrate

它给了我警告

代码语言:javascript
复制
[WARN] table 'Role' doesn't exist. Did you run the migration ? Ignoring rolify config.

此外,没有创建表。我在这里有什么问题吗?这是我的迁移文件,

代码语言:javascript
复制
 class RolifyCreateRoles < ActiveRecord::Migration
    def change
     create_table(:roles) do |t|
      t.string :name
      t.references :resource, :polymorphic => true
      t.timestamps
     end

    create_table(:users_roles, :id => false) do |t|
      t.references :user
      t.references :role
    end

    add_index(:roles, :name)
    add_index(:roles, [ :name, :resource_type, :resource_id ])
    add_index(:users_roles, [ :user_id, :role_id ])
  end
 end

我的版本,

Rails - 4.1.0 Ruby - 2.1.1

请有人帮我..。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 08:43:51

这是一个已知的rolify错误;迁移是在没有.rb扩展的情况下创建的,因此rake db:migrate不会提取它。

手动重命名迁移以添加.rb扩展。更改:

代码语言:javascript
复制
db/migrate/20140425070708_rolify_create_roles

将是:

代码语言:javascript
复制
db/migrate/20140425070708_rolify_create_roles.rb

然后又是rake db:migrate

票数 23
EN

Stack Overflow用户

发布于 2015-12-31 15:47:12

我在Rails 5.2.5和Rolify 5.0.0中也有同样的问题,并设计了3.5.3

代码语言:javascript
复制
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'papi_development.roles' doesn't exist: SELECT `roles`.* FROM `roles`

我修正了它,在运行rake :migrate命令之前,我在用户模型中注释了我的Devise。

代码语言:javascript
复制
class User < ActiveRecord::Base
  ...
  # devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
  ...
end

在成功的迁移之后,我取消了devise的注释,从那时起,一切看起来都很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23286906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档