我有一個遺留數據庫。用戶擁有多個帳戶,帳戶擁有多個用戶。有一個名爲UserAccountMapping的連接表:rails 3 has_and_belongs_to_many
=====================
|UserID | AccountID|
=====================
這兩列都是var chars類型。
在Account.rb:
has_and_belongs_to_many:用戶:join_table =>:UserAccountMapping,:foreign_key =>:帳戶ID,:association_foreign_key =>:用戶ID
在User.rb:
has_and_belongs_to_many:帳戶,:join_table => 'UserAccountMapping',:foreign_key =>:用戶ID,:association_foreign_key =>:ACCOUNTID
用戶還有一個:email和:id列。用戶的主鍵是:id(它是一個整數),以及:email是一個字符串。
當我做類似User.first.accounts
的事情時,連接SQL的WHERE子句將嘗試將UserAccountMapping.UserID與用戶的id相匹配,但我希望它使用用戶的:email。這可能嗎?
所以,它生成的SQL是:
選擇 「帳戶」 * FROM 「帳戶」 INNER JOIN 「UserAccountMapping」 ON 「帳戶」, 「帳戶ID」= 「UserAccountMapping」 「帳戶ID」 WHERE。 「UserAccountMapping」, 「用戶名」= 3
相反,我想這一點:
選擇 「帳戶」 * FROM 「帳戶」 INNER JOIN 「UserAccountMapping」 ON 「帳戶」, 「帳戶ID」。 =「UserAccountMapping」。「Accoun TID」 WHERE‘UserAccountMapping’,‘用戶名’=‘[email protected]’
你爲什麼要這麼做?嘗試設置'用戶'主鍵=>:電子郵件 – Damien