参考这篇文章:Rails:处理几个类似的模型类?
使用 STI 和 Store 特征的组合来组织非常相似的模型。
“使用名为设置的文本列为 Student 声明一个基本模型。
class Student < ActiveRecord::Base
store :settings
# name, email, phone, address etc..
end
class HighSchoolStudent < Student
# declare HighSchoolStudent specific attributes
store_accessor :settings, :gpa
end
如何为 HighSchoolStudent 创建表单,同时保留在 Student 控制器下?
我不想为 HighSchoolStudent 添加单独的控制器或路由资源,有没有办法为 Student 和 HighSchoolStudent 提供一个表格,并带有一个复选框来指示它是 Student 还是 HighSchoolStudent?我是否可以只要求为子类创建的额外属性仅在选中该特定类的情况下才需要提交表单?
<%= simple_form_for(@student, html: {class: "form-horizontal"}) do |f| %>
<%= f.input :name, as: :text, input_html: {rows: "1"} %>
<%= f.input :email, as: :text, input_html: {rows: "2"} %>
<%= f.input :gpa, as: :text, input_html: {rows: "1"} %>
<%= f.button :submit, class: "btn btn-primary" %>