Ruby on rails 同一表中具有多个潜在外键的多个关联

Ruby on rails 同一表中具有多个潜在外键的多个关联,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想做一些看似简单的联想: 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 :orde

我想做一些看似简单的联想:

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
classorderwizardMiniWizard.name
属于:卖家向导,:class\u name=>MiniWizard.name
结束
类迷你向导
  • 关联的迷你向导需要知道谁正在连接到它。假设有很多:通过最好的方式去走?如果是的话,这些模型会是什么样子

  • 迷你向导实例需要知道它是买家还是卖家。我一直在想怎么做


  • 实际上,您可能需要两个关联,例如,类似这样的东西可能更准确地表示关系:

    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
    
    类小向导'buyer\u wizard\u id',:class\u name=>'MiniWizard'
    有一个:销售订单向导,:外键=>'seller\u向导\u id',:class\u name=>'MiniWizard'
    def order_向导
    买的|订单|向导|卖的|订单|向导
    结束
    def是买家向导吗?
    !你买了什么?
    结束
    def是卖方向导吗?
    !已售出\u订单\u向导。无?
    结束
    结束
    
    但迷你向导实例将有一个且只有一个订单向导。那么为什么有很多?我更新了我的答案,为has_one案例工作。如何定义关系并不重要,因为两者都有一个和多个,这取决于您的用例,关键是您有两个关系-每个外键一个,而不是一个关系。。。如果我只是想要订单向导,那么添加的方法会起作用吗?我用一个订单向导函数和一个is买家向导的检查来更新代码?那是巫师吗?我喜欢,但很难看。我在做什么,让它感觉它不是“Railsway”(tm)