gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序之间共享 AR 模型

转载 作者:行者123 更新时间:2023-12-04 06:14:21 25 4
gpt4 key购买 nike

我有一个问题,我已经尝试解决了一段时间了。我有 4 个不同的 Rails 应用程序使用相同的数据库,这意味着它们需要使用相同的模型并进行相同的迁移。我最初通过创建一个打包到 gem 中的 Rails 引擎来解决这个问题,然后它携带所有模型和迁移。现在我意识到只有一个应用程序需要一些功能,而其他应用程序则不需要——例如,管理应用程序需要有为所有模型提供可排序表的方法——其他应用程序根本不需要这个功能。

所以我的想法是找到一种方法,我可以从 gem 中提供“基本”模型,同时在我的特定应用程序中扩充这些基本模型以在需要时添加额外的功能。我首先尝试的是继承:

class User < Base::User
end

但这不起作用,因为现在您的加载路径中有 2 个用户模型(User 和 Base::User),并且在查询关联时,它总是为关联的记录类选择“最接近”的类 - 这意味着当您有一个 Model::Account 属于 :user,它将选择 Model::User 作为关联类,而不是 User。我尝试反转 AR 类型的计算方法,但这只会导致更多问题。

从技术上讲,我可以从基本引擎 (gem) 提供我的所有模型,但这里的问题是我如何在我的应用程序中扩展这些模型? .class_eval 感觉真的很脏,继承不起作用,提供基本功能,因为 mixins 意味着“基本”模型感觉和看起来都不像模型。我的目标是尽可能减少其他开发人员的摩擦,我希望他们能够像往常一样在 gem 中定义他们的模型,然后还可以通过一种简单的方法在其他应用程序中扩展该功能。

有没有人解决过这个问题或者有什么建议?或者你们如何在大型应用程序中解决这个问题?任何帮助将不胜感激。

最佳答案

Rails guides 中提到了这一点.它描述了使用装饰器模式的类修改。

关于ruby-on-rails - 在 Rails 应用程序之间共享 AR 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27606064/

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