在过去的几个小时里,我一直在思考我应该走哪条路。我有一个通知模型。到目前为止,我一直使用一个 notification_type 列来管理类型,但我认为最好为通知类型创建单独的类,因为它们的行为不同。
目前,有 3 种方式可以发送通知:短信、推特、电子邮件
每个通知将具有:
id
subject
message
valediction
sent_people_count
deliver_by
geotarget
event_id
list_id
processed_at
deleted_at
created_at
updated_at
似乎 STI 是一个不错的候选人,对吗?当然,Twitter/SMS 不会有主题,Twitter 也不会有 sent_people_count、告别词。在这种情况下,我会说他们共享大部分领域。但是,如果我为 twitter 添加一个“reply_to”字段并为 DM 添加一个 bool 值呢?
我的观点是,现在 STI 是有道理的,但在这种情况下,我将来可能会因为不只是从 MTI 开始而踢自己吗?
更复杂的是,我想要一个 Newsletter 模型,它是一种通知,但不同之处在于它不会使用 event_id 或 delivery_by。
我可以使用大约 2/3 的通知基类字段查看通知的所有子类。 STI 是一个明智的选择,还是我应该使用 MTI?
最佳答案
鉴于信息有限,我会说坚持使用 STI。
关键问题是:您的应用程序中是否存在您希望将所有类型的通知放在一起考虑的地方?如果是这样,那么这是您想要坚持使用 STI 的强烈信号。
关于single-table-inheritance - Ruby on Rails 中的多表继承与单表继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1634668/