2011-02-09 63 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