我对导轨中的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
还有一些STI类,例如select.rb
class Select < Answer
validates presence: true
end
这样做的原因是我希望能够针对不同类型的答案进行自定义验证和计算。
在我尝试在与每个订单相关联的答案上创建fields_for之前,一切正常。在渲染表单时,我能够为每个STI类提供信息。但是,在提交表单时,所有答案都会在数组answers_attributes
中结束,并且所有答案都会被视为class Answer
,而不是class Select
。
任何人都知道如何解决这个问题?
谢谢!
答案 0 :(得分:0)
我不确定我的问题是否正确,但也许您正在寻找becomes
?
Answer.last.becomes(Select)