Несколько ассоциаций в одной таблице с несколькими потенциальными внешними ключами - PullRequest
0 голосов
/ 09 февраля 2011

Я хочу сделать несколько, казалось бы, простых ассоциаций:

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 Ответ

1 голос
/ 09 февраля 2011

Вы, вероятно, на самом деле хотите две ассоциации, например, что-то вроде этого может представлять отношения более точно:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...