2014-04-25 14 views
12

Sau bó cài đặt đá quý (đá quý 'rolify'), tôi đã tạo ra các tập tin bằng cách sử dụng lệnh sau đây,bảng Rolify không nhận được tạo ra

rails g rolify Role User 

Dưới file đã tạo ra,

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 

sau đó, tôi đã cho

rake db:migrate 

của nó đem lại cho tôi những cảnh báo,

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

Cũng các bảng không được tạo. Vấn đề là tôi thiếu gì ở đây.? tập tin chuyển đổi của tôi này,

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 

phiên bản Mỹ,

Rails - 4.1.0 Ruby - 2.1.1

Hãy bất kỳ một giúp tôi trong việc này ..

Cảm ơn nâng cao.

+0

hm, bạn đã thử đặt lại cơ sở dữ liệu của mình chưa và chạy tất cả các lần di chuyển từ đầu? –

Trả lời

24

Đó là lỗi đã biết với rolify; di chuyển được tạo mà không cần tiện ích mở rộng .rb để rake db:migrate không nhận được.

Đổi tên thủ công di chuyển của bạn để thêm tiện ích .rb. Thay đổi:

db/migrate/20140425070708_rolify_create_roles 

là:

db/migrate/20140425070708_rolify_create_roles.rb 

Và sau đó rake db:migrate một lần nữa.

+1

Cảm ơn câu trả lời Graeme, thực sự là tôi nhận thấy rằng .rb .. :) hữu ích :) – Abhiram

+6

Với Ruby 2.2 và Rails 4.2, tôi nhận được thông báo lỗi tương tự trong khi thực thi rake db: migrate. Tệp di chuyển có phần mở rộng .rb và các bảng được tạo ra, tuy nhiên để loại bỏ thông báo lỗi chỉ cần gõ: rake db: test: preparation và sau đó rake db: test: load – OskarH

1

tôi đã cùng một vấn đề với Rails 5.2.5 và 5.0.0 Rolify và Vạch 3.5.3

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

tôi cố định nó bằng cách cho ý kiến ​​ra đường lập mưu của tôi trong mô hình tài khoản trước khi chạy db rake: di chuyển lệnh.

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

Sau khi di chuyển thành công, tôi đã bỏ ghi chú đường nét và mọi thứ dường như hoạt động tốt từ thời điểm đó.

Các vấn đề liên quan