首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >STI +命名空间

STI +命名空间
EN

Stack Overflow用户
提问于 2011-04-20 06:55:06
回答 2查看 1.1K关注 0票数 0

我需要能够为用户安排提醒。所以我想我可以创建一个基本模型Reminder,并使用STI来生成子类,这些子类覆盖了fire()函数,该函数在提醒触发时被调用。但是不同的用户角色有相似类型的提醒。因此它们需要命名空间,例如Adult::BrushTeethReminder向用户发送电子邮件,Kid::BrushTeethReminder在kid's FB墙上发帖。

可以使用STI吗?如果可以,如何使用STI?我看到的另一种方式是只在模型名称前加上前缀,比如KidBrushTeethReminder。或者更深入--编写一个工厂方法,根据类型创建对象。还是有一种更干净的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-21 16:39:29

我发现您确实可以对不同名称空间中的模型使用STI。您只需要将它们放在适当的子文件夹中。例如,Kid::BrushTeethReminder应该放在文件brush_teeth_reminder.rb中的app/models/kid

票数 1
EN

Stack Overflow用户

发布于 2011-04-20 11:18:37

我看到两种类型的提醒,一种是成人的,另一种是孩子的。就我个人而言,我会使用一个名为Reminder的STI,并从Reminder继承一个名为BrushTeeth的模型。在BrushTeeth模型中,我有两个布尔列,分别名为for_adult和for_kid。

在您的成人命名空间中,您可以通过查询for_adult列是否设置为TRUE来检查BrushTeeth,并从中建立您的逻辑/实现的基础。对于Kid Namespace,您可以检查for_kid列。

以提醒为基础,让你可以轻松选择其他提醒(如淋浴、洗浴、指甲等)。提醒模型还附带一个Type列,因为这是一个STI模型。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5723716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档