Таблицы Rolify не создаются

После установки пакета gem (gem 'rolify') я сгенерировал файл, используя следующую команду:

rails g rolify Role User

Ниже созданных файлов

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

Тогда я дал

rake db:migrate

Он дал мне предупреждение,

[WARN] table 'Role' doesn't exist. Did you run the migration ? Ignoring rolify config.

Также не создаются таблицы. В чем проблема, я ничего не вижу здесь? Этот файл миграции,

 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

Пожалуйста, помогите мне в этом.

Спасибо заранее.

Ответ 1

Это известная ошибка с rolify; перенос создается без расширения .rb, поэтому rake db:migrate не подбирает его.

Вручную переименуйте перенос, чтобы добавить расширение .rb. Изменение:

db/migrate/20140425070708_rolify_create_roles

:

db/migrate/20140425070708_rolify_create_roles.rb

И затем rake db:migrate снова.

Ответ 2

У меня была такая же проблема с Rails 5.2.5 и Rolify 5.0.0 и Devise 3.5.3

ActiveRecord::StatementInvalid: Mysql2::Error: Table 'papi_development.roles' doesn't exist: SELECT `roles`.* FROM `roles`

Я исправил его, прокомментировав мою строку Devise в модели User перед запуском команды rake db: migrate.

class User < ActiveRecord::Base
  ...
  # devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
  ...
end

После успешной миграции я раскоментировал линию разработки, и все было хорошо с этого момента.