gpt4 book ai didi

ruby-on-rails - STI + 命名空间

转载 作者:行者123 更新时间:2023-12-04 17:00:49 24 4
gpt4 key购买 nike

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

STI 是否有可能,如果是,如何?
我看到的另一种方式是只为模型名称添加前缀,例如 KidBrushTeethReminder .或者更深入 - 编写一个根据类型创建对象的工厂方法。或者有更干净的方法吗?

最佳答案

我看到两种类型的提醒,一种用于成人,一种用于 child 。就我个人而言,我会使用一种名为 Reminder 的 STI,并从 Reminder 继承一个名为 BrushTeeth 的模型。在 BrushTeeth 模型中,我将有两个名为 for_adult 和 for_kid 的 bool 列。

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

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

希望有帮助。

关于ruby-on-rails - STI + 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com