请查看附件图片
正如您所看到的,PrizePartner和AvailablePartner
之间存在一对多的关系这是逻辑: 一个奖项合作伙伴可以选择另一个合作伙伴(代表他)
所以可用的合作伙伴将拥有奖品合作伙伴ID和已被选中的其他奖项合作伙伴的ID。
以下是一个例子:
PrizePartner:
Now AvailablePartner
基本上俱乐部1不能支付奖金,因此它将奖池指向俱乐部2和俱乐部3池。
现在,如果我这样做: PrizePartner
has_many :available_partners
AvailablePartner
belongs_to :prize_partner, :primary_key => :prize_partner_id
您认为这是一个很好的解决方案,还是有一种表可以在rails中引用自己?
谢谢。
可能的答案
这样的事情可能有所帮助:
迁移:
class AddAvailablePartnerToPrizePartner < ActiveRecord::Migration
def change
add_column :prize_partners, :available_partner_id, :integer
end
end
然后:
class PrizePartner < ActiveRecord::Base
belongs_to :partner, :class_name => 'PrizePartner'
has_many :nominated_partner, :class_name => 'PrizePartner',:foreign_key => :available_partner_id
end
在控制台中:
s = PrizePartner.find(1)
s.nominated_partner
它确实有效:)不确定这是否是最好的方法,但它有效并且我不需要AvailablePartner表
上述解决方案不起作用,因为一个俱乐部可以添加一个俱乐部作为合作伙伴,而每个俱乐部应该能够添加一个以上的俱乐部作为可用的合作伙伴。
回到原点:(