尚未创建Rolify表

Abh*_*ram 12 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rolify

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

rails g rolify Role User
Run Code Online (Sandbox Code Playgroud)

下面的文件已创建,

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
Run Code Online (Sandbox Code Playgroud)

然后,我给了

rake db:migrate
Run Code Online (Sandbox Code Playgroud)

它给了我警告,

[WARN] table 'Role' doesn't exist. Did you run the migration ? Ignoring rolify config.
Run Code Online (Sandbox Code Playgroud)

表也​​没有创建.我在这里错过了什么问题.这是我的迁移文件,

 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
Run Code Online (Sandbox Code Playgroud)

我的版本,

Rails - 4.1.0 Ruby - 2.1.1

请任何人帮助我...

提前致谢.

小智 23

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

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

db/migrate/20140425070708_rolify_create_roles
Run Code Online (Sandbox Code Playgroud)

成为:

db/migrate/20140425070708_rolify_create_roles.rb
Run Code Online (Sandbox Code Playgroud)

然后rake db:migrate再说一遍.

  • 使用Ruby 2.2和Rails 4.2,我在执行rake db:migrate时会收到相同的错误消息.迁移文件具有.rb扩展名并且创建了表,但是为了摆脱错误消息,只需键入:rake db:test:prepare然后rake db:test:load (6认同)