簡體   English   中英

在Rails 4中擁有一個模型既屬於孩子又屬於其父母有什么含義?

[英]What are the implications of having a model belong to both a child and its parent in Rails 4?

我在Rails 4.2應用程序中具有以下關系設置。 如果我希望Tail屬於Kite,那么我可以引用一般的Kite類及其關聯的尾部之間的關系-這是Rails的反模式嗎? 此時,在代碼中,我需要在尾部添加kite_id。 (目前,它同時具有beach_kite_id和snow_kite_id)。 有什么方法可以利用前面提到的* _kite_id,而不必在尾巴上添加kite_id?

class Kite

end

class BeachKite < Kite
  has_many :tails
end

class SnowKite < Kite
  has_many :tails
end

class Tail
  belongs_to :snow_kite
  belongs_to :beach_kite
end

STI(單表繼承)多態關聯使您可以簡化關聯,如下所示:

class Kite < ActiveRecord::Base
  has_many :tails, as: :kite
end

class BeachKite < Kite
end

class SnowKite < Kite
end

class Tail < ActiveRecord::Base
  belongs_to :kite, polymorphic: true
end

tails表存儲了kite_idkite_type因為它是多態的

試試吧:

snow_kite = SnowKite.create(tails: [Tail.create])
Tail.last.kite => snow_kite

beach_kite = BeachKite.create(tails: [Tail.create])
Tail.last.kite => beach_kite

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM