2014-04-25 6 views
12

Nach Bündel erstellt immer das Juwel der Installation (gem 'rolify'), habe ich die Datei generiert haben Sie den folgenden Befehl verwenden,Rolify Tabellen nicht

rails g rolify Role User 

Below Dateien erstellt wurde,

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 

dann gab ich

rake db:migrate 

Its me die Warnung zu geben,

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

Auch Tabellen werden nicht erstellt. Was ist das Problem, ich vermisse hier etwas. Diese meine Migrationsdatei,

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 

Meine Versionen,

Rails - 4.1.0 Rubin - 2.1.1

Bitte jemand mir helfen, in diesem ..

Danke voraus.

+0

hm, haben Sie versucht, Ihre Datenbank zurückzusetzen und alle Migrationen von Grund auf neu zu starten? –

Antwort

24

Es ist ein bekannter Fehler mit rolify; Die Migration wird ohne die .rb Erweiterung erstellt, so dass die rake db:migrate es nicht abholt.

Benennen Sie Ihre Migration manuell um, um die Erweiterung .rb hinzuzufügen. Wechsel:

db/migrate/20140425070708_rolify_create_roles 

sein:

db/migrate/20140425070708_rolify_create_roles.rb 

Und dann rake db:migrate wieder.

+1

Danke für die Antwort Graeme, wirklich ich dint bemerken, dass .rb .. :) hilfreich :) – Abhiram

+6

Mit Ruby 2.2 und Rails 4.2 bekomme ich die gleiche Fehlermeldung beim Ausführen von Rake db: migrieren. Die Migrationsdatei hat die Erweiterung .rb und die Tabellen werden erstellt, aber um die Fehlermeldung loszuwerden, geben Sie einfach ein: rake db: test: prepare und dann rake db: test: load – OskarH

1

hatte ich das gleiche Problem mit Rails 5.2.5 und Rolify 5.0.0 und 3.5.3

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

ich es durch Kommentare aus meiner Devise Linie in dem User-Modell festgelegt Entwickeln vor der rake db ausgeführt wird: Migrationsbefehl

Nach der erfolgreichen Migration habe ich die Devise-Zeile auskommentiert und alles schien von diesem Punkt an gut zu funktionieren.

Verwandte Themen