2011-06-05 131 views
1

我要把我的頭髮拉出來。在Rails中與ActiveRecord反向has_one關係?

我有以下兩個表:

databases 
--------- 
id 
user_id 
driver 
host 
port 
database_name 
username_encryption_id 
password_encryption_id 

encryptions 
----------- 
id 
encryption 
salt 

使用Ruby on Rails的ActiveRecord的關聯,我希望能夠做到這一點

database = Database.find_by_id(database_id) 
encryption = database.username_encryption 

我敢肯定,這是一個has_one關係(數據庫有一個用戶名加密)。這些工作都不是:

has_one :password_encryption, :class_name => "Encryption", :foreign_key => :password_encryption_id, :inverse_of => :encryption 
has_one :username_encryption, :inverse_of => :database 

我該如何得到這個工作?我在這裏死去。

回答

2

這看起來像一個belongs_to的關聯,因爲databaseusername_encryption_id

class UsernameEncryption < Encryption 
    has_one :database 
end 

class Database 
    belongs_to :username_encryption 
end 
+1

啊,原來belongs_to的雲中包含外鍵的模式。這工作:belongs_to:username_encryption,:class_name =>「加密」,:foreign_key =>:username_encryption_id – 2011-06-05 20:25:04