更新:在考虑了更多之后,我认为这个问题包括多态性和 STI。
假设我有以下内容:
class Vehicle < ActiveRecord::Base
belongs_to :dealership
...
end
class Car < Vehicle
...
end
class Truck < Vehicle
...
end
Car 和 Truck 模型具有相同的属性,但模型中的逻辑不同,因此它们都只使用 Vehicles 表。
我想制作一个通用表格,允许某人创建新的车辆记录,并选择它是“汽车”还是“卡车”。然后,此表单应在后端创建“汽车”或“卡车”记录,而不是通用的“车辆”记录。
问题: 您如何在 Rails 表单中显示此选项?具体来说,是否有列出抽象基础模型的子类型的方法,和/或是否有一种简单的方法可以将它们呈现为(例如)表单中的 Select 元素?
我希望创建一个可以制造汽车或卡车的表格,而不是只为汽车和卡车提供两种不同的表格的原因,最终我还希望这些模型嵌套在父级“经销商”中。我不仅希望能够创建新车辆并选择“汽车”或“卡车”作为选项,还希望能够拥有嵌套表单,用户可以在其中加载“经销商”并查看/编辑所有汽车以及以单一形式属于该经销商的卡车。我知道如何使用accepts_nested_attributes_for
一个简单的关联Vehicle belongs_to :dealership
来设置它,但我不确定如何为从 Vehicle 继承的子模型设置它。