gpt4 book ai didi

ruby-on-rails - 单表继承以及在 Rails 中使用它的位置

转载 作者:行者123 更新时间:2023-12-03 05:56:56 25 4
gpt4 key购买 nike

我陷入了一个奇怪的设计问题,

我正在研究两种类型的配置文件模型,

  • 用户个人资料(属于用户)
  • 作为“机器人”保留在站点内的其他人(不属于任何人)

这两种类型的配置文件的典型 OO 行为是相同的,但只有重要的属性/属性是通用的(非常重要的属性有 5-6 个),其他属性如“兴趣等”(几乎有 10-15 个属性)没有机器人配置文件

早期从事此工作的编码员为机器人配置文件/用户配置文件创建了单独的模型/ Controller ,这在各处创建了大量冗余,而且正如预期的那样难以维护、编写测试等。我想把它干燥,至少解决问题部分/全部这些冗余问题。

有人建议使用单表继承作为解决方案

有人建议改用多态关联。

什么是更好的方法。我们什么时候真正使用性传播感染?

我自己的想法是,当模型的属性相同但行为不同时,STI 的使用效果最好。

想想我能做什么?

最佳答案

当属性相同但行为不同时,将 STI 描述为最有用是“大约正确的”,但可能有一点限制。顾名思义,当不同类型的对象之间存在明确的 OO 风格的继承关系,而不是数据库风格的关系时,我喜欢使用 STI。

如果机器人和用户之间存在通用代码,我认为 STI 听起来像是赢家。如果只有一些常见属性,它可能不太适用,但仍然值得一试。

我是一个非常喜欢实验的人,所以我的建议是尝试一下。对代码进行分支并将模型重构为 STI 关系。看看它是否真的能解决问题,或者只是将一系列令人头痛的问题换成其他问题。

我认为你不会看到太多好处的一件事是让你的 Controller 枯竭。根据我的经验,STI 模型通常不会转化为类似的相关 Controller 。但这是值得尝试的其他事情。有时会赢,有时则不会。

关于ruby-on-rails - 单表继承以及在 Rails 中使用它的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555668/

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