0

我有一個關於軌道中的STI的問題,我似乎無法得到我的頭。嵌套模型上的軌道STI

我有2種型號,order.rb

class Order < ActiveRecord::Base 
    has_many :answers 
end 

answer.rb

class Answer < ActiveRecord::Base 
    belongs_to :order 
    attr_accessible :value, :input_id, :type 
end 

answer.rb也有像select.rb

class Select < Answer 
    validates presence: true 
end 

幾個STI類的原因是,我希望能夠進行自定義驗證並針對不同類型的答案進行調查。

一切正常,直到我試圖做出與每個訂單相關的答案fields_for。渲染表單時,我能夠灌輸每個STI類。然而,所有的答案都會在提交表格時以answers_attributes排列,並且將全部視爲class Answer而不是例如class Select

任何人都知道如何解決這個問題?

謝謝!

回答

0

我不確定我是否正確地解決了您的問題,但也許您正在尋找becomes

Answer.last.becomes(Select) 
+0

嗯,問題是某些STI類具有通過attr_accessor的動態屬性,這些動態屬性在表單中呈現,然後在STI模型中解析爲值。所以我覺得我發佈表單時需要他們加入他們的STI課程。 – nbon

+0

你可能想檢查[這篇文章](http://stackoverflow.com/questions/555668/single-table-inheritance-and-where-to-use-it-in-rails) – fotanus