2013-09-24 44 views
0

我繼承了相當怪異的表格佈局:belongs_to的不同字段名

callbacks 
id, note, user 

admin 
id, name, password 

在回調中,用戶設置爲管理員的名稱,而不是實際的ID。現在我需要能夠撥打callbacks.user並讓導軌查找具有該名稱的管理員,然後將其綁定到該記錄。

我有admin的模型被稱爲users

我怎麼會去嗎?

回答

1

您可以覆蓋默認方法。

def user 
    User.find_by_name(user_name) 
end 

def user=(obj) 
    self.user_name = obj.name 
end 

def user_name 
    self[:user] 
end 

def user_name=(name) 
    self[:user] = name 
end 

其他選項,使其與belongs_to工作,有primary_key選項,但需要有一個不同的名稱屬性user

# Callback.rb 
belongs_to :user_model , :class => "User", :foreign_key => :user, :primary_key => :name 

# User.rb 
has_one :callback , :foreign_key => :user, :primary_key => :name 
+0

謝謝!我原本想這樣做,但我不確定這是否是一種非常「軌道式」的方式,並且想知道是否可以使用'belongs_to'方法 – andy

+0

可以使它與'belongs_to'配合使用主鍵,但如果你想使用'user'作爲關聯的名字,你需要重寫默認方法 – tihom

+0

有趣的,謝謝!這是一個如此尷尬的佈局,但這個作品很好:) – andy