【问题标题】:Rolify tables are not getting created未创建 Rolify 表
【发布时间】:2014-04-25 07:35:25
【问题描述】:

捆绑安装 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

我的版本,

导轨 - 4.1.0 红宝石 - 2.1.1

请任何人帮助我..

提前致谢。

【问题讨论】:

  • hm,您是否尝试过重置数据库并从头开始运行所有迁移?

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rolify


【解决方案1】:

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

手动重命名您的迁移以添加 .rb 扩展名。变化:

db/migrate/20140425070708_rolify_create_roles

成为:

db/migrate/20140425070708_rolify_create_roles.rb

然后再次rake db:migrate

【讨论】:

  • 感谢 Graeme 的回答,我真的没有注意到 .rb.. :) 有帮助 :)
  • 对于 Ruby 2.2 和 Rails 4.2,我在执行 rake db:migrate 时收到相同的错误消息。迁移文件具有 .rb 扩展名并创建了表,但是要摆脱错误消息,只需键入:rake db:test:prepare 然后 rake db:test:load
【解决方案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`

在运行 rake db:migrate 命令之前,我通过在 User 模型中注释掉我的 Devise 行来修复它。

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

成功迁移后,我取消了设计行的注释,从那时起一切似乎都正常。

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 2016-07-08
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多