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)