2017-03-08 27 views
1

我正在將Ruby從版本2.3更新到2.4並使用Rails 5,使用MySQL數據庫創建新應用程序。has_and_belongs_to_many關係不適用於Rails 5上的新應用程序創建

rails new myapp1 -d mysql 

然後,我創建2個車型,如用戶和角色

rails g model Users username:string 
rails g model Roles rolename:string 

之後,我創建一個遷移連接模型

rails g migration CreateRolesUsers users:references roles:references 

然後我定義的模型之間的關係如下

class User < ApplicationRecord 
    has_and_belongs_to_many :roles 
end 

class Role < ApplicationRecord 
    has_and_belongs_to_many :users 
end 

最後,我打開軌道控制檯,並運行以下命令

@user = User.new(:username => "Nifras") 
@role = Role.new(:rolename => "admin") 

@role.save 

@user.roles << @roles 

上面最後一行產生以下錯誤:

ActiveModel::UnknownAttributeError: unknown attribute 'user_id' for User::HABTM_Roles. 

但是我的關係表有USER_ID它的自我。我錯在哪裏以及如何解決這個問題?

在此先感謝

回答

2

這是不正確的,因爲它使用複數。

rails g migration CreateRolesUsers users:references roles:references 
更好

rails g migration CreateRolesUsers user:references role:references 

稍微更優雅

rails generate migration CreateJoinTableRoleUser role user 

所以,基本上,做一個rake db:rollback,刪除最後遷移db/migration,然後使用二線或三線以上來生成正確的遷移。或者,回滾後,您可以編輯遷移以將「用戶」和「角色」更改爲「用戶」和「角色」。

相關問題