2013-06-24 130 views
0

我有兩種模式 - 用戶角色。它們有關聯如下:無法刪除「has_and_belongs_to_many」連接記錄

user.rb

... 
has_and_belongs_to_many :roles 
... 

role.rb

... 
has_and_belongs_to_many :users 
... 

因此,用戶可以有多個角色,一個角色可以關聯與許多用戶。

爲了角色設置默認值(因爲每個用戶必須有至少一個角色創建)我在seed.rb文件添加以下代碼並運行分貝:種子命令:

創建
roles = [ 
    Admin: 'test', 
    Student: 'test' 
] 

roles.each do |role, description| 
    SecurityUsersRole.find_or_create_by_role_and_description(role,description) 
end 

的角色,但我不能摧毀他們 - 這是返回的錯誤信息:

的ActiveRecord :: StatementInvalid在/ security_users_roles/2

ActiveRecord::JDBCError: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, 
SQLERRMC=DB2INST1.SECURITY_USERS_SECURITY_USERS_ROLES, DRIVER=3.65.77: 

SELECT security_users.* 
FROM security_users 
INNER JOIN security_users_security_users_roles 
    ON security_users.id = security_users_security_users_roles.security_user_id 
WHERE security_users_security_users_roles.security_users_role_id = 2 

上面的語句應該不返回任何記錄,因爲我還沒有創建任何用戶着呢,與角色相關聯了。

任何人都可以告訴我做錯了什麼嗎?

回答

0

this節的官方文檔到底是說:

拇指的簡單規則是,你應該建立一個的has_many :通過關係,如果你需要的關係模式工作 作爲一個獨立的實體。如果您不需要對 關係模型進行任何操作,則可能會更簡單地設置 has_and_belongs_to_many關係(儘管您需要記住 以在數據庫中創建連接表)

這就是問題 - 我還沒有創建連接表。如果您需要更多關於如何創建此中間連接表的信息,請參見Rails not creating intermediary table? - Habtm relationship