2011-02-09 59 views
0

我想要做一些看似簡單的關聯:多個關聯與多個潛在的外鍵

class OrderWizard < ActiveRecord::Base 
    belongs_to :buyer_wizard,  :class_name => MiniWizard.name 
    belongs_to :seller_wizard, :class_name => MiniWizard.name 
end 

class MiniWizard < ActiveRecord::Base 
    has_one :order_wizard, :foreign_key = '????' # Could be buyer_wizard_id or seller_wizard_id 

    def is_buyer_wizard? 
    ?? 
    end 

    def is_seller_wizard? 
    ?? 
    end 
end 
  1. 相關的MiniWizard需要知道誰是連接到它。假設has_many:通過最好的方式去?如果是這樣,模型將如何顯示?

  2. MiniWizard實例需要知道它是買方還是賣方。陷入如何做到這一點。

回答

1

實際上,你可能需要兩個協會,例如,這樣的事情可能會更準確地表示關係:

class MiniWizard < ActiveRecord::Base 
    has_one :bought_order_wizard, :foreign_key => 'buyer_wizard_id', :class_name => 'MiniWizard' 
    has_one :sold_order_wizard, :foreign_key => 'seller_wizard_id', :class_name => 'MiniWizard' 

    def order_wizard 
    bought_order_wizard || sold_order_wizard 
    end 

    def is_buyer_wizard? 
    !bought_order_wizard.nil? 
    end 

    def is_seller_wizard? 
    !sold_order_wizard.nil? 
    end 
end 
+0

但MiniWizard實例都會有一個且只有一個order_wizard。那麼爲什麼has_many? – jevy 2011-02-09 18:52:51