在包中安装了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
请有人帮我..。
提前谢谢。
发布于 2014-04-25 08:43:51
这是一个已知的rolify错误;迁移是在没有.rb扩展的情况下创建的,因此rake db:migrate不会提取它。
手动重命名迁移以添加.rb扩展。更改:
db/migrate/20140425070708_rolify_create_roles将是:
db/migrate/20140425070708_rolify_create_roles.rb然后又是rake db:migrate。
发布于 2015-12-31 15:47:12
我在Rails 5.2.5和Rolify 5.0.0中也有同样的问题,并设计了3.5.3
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'papi_development.roles' doesn't exist: SELECT `roles`.* FROM `roles`我修正了它,在运行rake :migrate命令之前,我在用户模型中注释了我的Devise。
class User < ActiveRecord::Base
...
# devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
...
end在成功的迁移之后,我取消了devise的注释,从那时起,一切看起来都很好。
https://stackoverflow.com/questions/23286906
复制相似问题