2013-09-25 38 views
1

我有一個名爲Ad的ActiveRecord,它有列ID和server_id。他們都是獨一無二的。 id由Rails給出,但這裏有意義的是server_id
然後我需要創建另一個名爲Bid的ActiveRecord,它與Ad有1對1的關係。出價有一個關鍵字ad_id,指的是廣告。 server_id
除ID以外的Rails外鍵

我知道我應該指定Ad has_one BidBid belongs_to Ad,並通過foreign_key指定外鍵名稱:"ad_id"。在這裏困擾我的是我只能找到如何讓Bid。 ad_id指的是Ad.id,而我希望它指的是廣告。 server_id
任何人都可以告訴我如何做到這一點?謝謝!

回答

2

用戶主鍵

Bid.rb 

    belongs_to :ad, :foreign_key => :ad_id, :primary_key => :server_id 


    Ad.rb 

    has_one :bid, :foreign_key => :ad_id, :primary_key => :server_id 

foregin_key選項。

+0

Bid.rb belongs_to:ad::foreign_key =>:ad_id,:primary_key =>:server_id 主鍵server_id實際上指向Ad.server_id,是否正確? – user1991452

+0

你會匹配'Ad'表中的'server_id'和'Bid'表中的'ad_id'。它在我的控制檯上工作。您可以運行'Bid.joins(:ad).to_sql'在'rails console'中測試它,看看它在做什麼。 – tihom

0

您是否在生成模型時嘗試使用'references'。在這裏,但將使它和primary_key明確的區別是不需要 即

rails generate model Advertisement bid:references 
+0

我沒有。我沒有看到在哪個地方指定投標外鍵應參考的廣告中的列。 – user1991452