0

時,我有一種利用具有以下屬性單表繼承變更型號:是否有可能在Rails 3的動態ID列使用單表繼承

id 
type #this is a single table inheritance type field. 
description 
dynamic_id 

我也有兩個子類, Race是Race和Workout的子類,它是Race的一個子類。

class Race < Change 

end 

class Workout < Race 

end 

我有第四類稱爲軌道,我想通過使用Change對象中的dynamic_id字段創建以下四個關聯。 (即,我沒有明確地將Race_id和workout_id添加到Change表中,而是想使用dynamic_id作爲Race類的race_id,將dynamic_id作爲Workout類的workout_id)通過這樣做,我將避免有很多在我的數據庫中沒有字段。)

以下是我嘗試創建的四個關聯。

  1. 比賽模式 - belongs_to的:軌道
  2. 鍛鍊模式 - belongs_to的:軌道
  3. 軌道模型 - 的has_many:比賽
  4. 軌道模型 - 的has_many:試訓

我一直在努力用關聯使用:class_name和:foreign_key來實現這一點,但我似乎無法得到它的工作。這實際上是可能的嗎?我意識到它可能不是最佳實踐,但我仍然想看看它是否可行。感謝您的輸入。

回答

2

你在找什麼是「多態關聯」。您可以在導軌指南中找到更多信息:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

您的情況有點特殊,因爲您希望使用與STI的多態關聯。我記得這個組合存在一個錯誤,但現在可以修復它。

我沒有完整地閱讀它,但是這個博客帖子似乎描述的情況:http://www.archonsystems.com/devblog/2011/12/20/rails-single-table-inheritance-with-polymorphic-association/

我多態協會和STI這裏描述遇到的問題:Why polymorphic association doesn't work for STI if type column of the polymorphic association doesn't point to the base model of STI?

相關問題