2014-04-25 52 views
12

捆綁安裝(寶石「rolify」),我一直在使用下面的命令生成的文件中的寶石後,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

請任何一個幫助我這個..在

謝謝提前。

+0

hm,您是否嘗試重置數據庫,並從頭開始運行所有遷移? –

回答

24

這是一個已知的錯誤rolify;創建遷移時不使用.rb擴展名,因此rake db:migrate不會提取它。

手動重命名您的遷移以添加.rb擴展名。更改:

db/migrate/20140425070708_rolify_create_roles 

是:

db/migrate/20140425070708_rolify_create_roles.rb 

然後rake db:migrate一次。

+1

感謝您的回答Graeme,我真的注意到.rb .. :)幫助:) – Abhiram

+6

使用Ruby 2.2和Rails 4.2時,執行rake db時會得到相同的錯誤信息:migrate。遷移文件具有.rb擴展名,並且創建表,但是隻需輸入:rake db:test:prepare,然後使用rake db:test:load – OskarH

1

我使用Rails 5.2.5和5.0.0 Rolify同樣的問題,並制定3.5.3

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

我通過運行耙分貝之前註釋掉用戶模型我想出線固定它:遷移命令。

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

成功移植後,我取消了註釋行,並且從這一點起,所有內容似乎都正常工作。

相關問題