Ruby on rails 单表继承还是多态?

Ruby on rails 单表继承还是多态?,ruby-on-rails,ruby,activerecord,polymorphism,single-table-inheritance,Ruby On Rails,Ruby,Activerecord,Polymorphism,Single Table Inheritance,所以我有一个数据库结构,看起来像这样: 活动: event_id: :integer event_type: :string name: :string slug: :string user_id: :integer start: :datetime finish: :datetime 我需要从事件中继承的婚礼: bride_name: :string groom_name: :string street: :string city: :string state: :string zip: :

所以我有一个数据库结构,看起来像这样:

活动:

event_id: :integer
event_type: :string
name: :string
slug: :string
user_id: :integer
start: :datetime
finish: :datetime
我需要从事件中继承的婚礼:

bride_name: :string
groom_name: :string
street: :string
city: :string
state: :string
zip: :integer
receptions: :text
我希望能够创建一个婚礼或任何其他事件,并让它继承事件模型中所有事件的共同特征。当我试着用STI做这件事时,婚礼模型只具备事件模型的特点。我如何实现这一点

这行不通

class Wedding < Event

  attr_accessor :receptions, :reception_name, :reception_address, :reception_city, :reception_state, :reception_zip

end
班级婚礼
由于Rails只支持现成的STI,如果您真的想要MTI,可以尝试一下gem


他们的跟踪器中有几个未解决的问题,但开发似乎有些活跃。

您的STI表中是否有一个
type
列用于Rails以保存事件类型?你的清单上好像没有。是的,当我尝试STI时,我做到了。我列出的是我想要的结构。即使我有一个类型列,它也只是创建了一个具有事件模型属性的对象。对于一个对象,您不需要任何
attr\u访问器
语句来访问模型中的属性。它可以使阅读更容易。有一个
类型
列(具有适当的内容)并在Ruby代码中继承就足够让STI工作了。如果你想要MTI,你可以试试@ma_il,请回答这个问题,这样我就可以接受了!我不知道有这样的宝石存在!对于数据库中不存在的值,我不需要属性访问器吗?我把所有的东西作为属性访问器,我正计划把它们变成一个数组,插入数据库的一部分。我刚刚看到,在数据库中以及在一个
attr\u访问器调用中都有一个字段
receipts
,后者是多余的。