0

This post很好地描述了我的問題,但該帖子的答案假設您爲子類使用單表繼承(STI)。在我的情況下,SomeProf的子類有它們自己的表,並且由於_type列存儲超類的類名,所以這不起作用。在我相當於SomeDeepProf1我宣佈self.table_name = 'some_other_table',我不喜歡使用STI,因爲我的等效SomeProf的子類具有非常不同的屬性。Rails沒有STI的多態關聯

任何建議如何解決這個問題?

回答

0

現在我用以下解決方法在SomeDeepProf1類解決這個問題: before_create :set_poly_type_to_class_name ... def set_poly_type_to_class_name self.profile_type = self.profile.class.name end

+0

不幸的是,這是不行的,一路...看來,因爲它是類'SomeDeepProf1'是想'profile_type '應該是'SomeProf'而不是'SomeDeepProf1'。在我的模型中,我有'SomeProf'類的has_many:through關係,如果我試圖從'SomeDeepProf1'到has_many:through關係,查詢將是'[「profile_type」,「SomeProf」]'。我怎樣才能改變查詢來檢查'SomeDeepProf1'而不是'SomeProf'? – ehannes