gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中放置不适合任何地方的类的指南

转载 作者:数据小太阳 更新时间:2023-10-29 06:22:46 24 4
gpt4 key购买 nike

我想知道是否有关于在 Rails 应用程序中放置非标准 Ruby 文件的最佳实践,那些不适合任何默认目录的文件(controllers/型号等)。

我说的是 Controller /模型等使用的类,但不是任何 Rails 基类的子类。包含从模型中提取的功能的类,以减少它们的体积。其中一些看起来像模型但不是 AR 模型,一些看起来更像“服务”,一些介于两者之间或其他。

一些随机的例子:

  • 通过 facebook 等使用密码处理身份验证的“策略”类。
  • 封装参数的“XParams”对象或处理参数处理的“XCreator”对象,以执行一些复杂的操作,最终创建一些 AR 模型
  • 向外部 API 发出请求或封装这些请求和响应的类
  • 可以替代真实 AR 模型的假模型(例如 guest 用户)
  • 重新申请工作
  • 从 Redis 存储和读取信息的类
  • 执行某些特定操作(如处理数据、生成报告等)并从 Resque 作业或 rake 任务中调用的类

我现在有很多这样的东西,其中一些被添加到 lib 中,最终成为一堆随机类和模块,一些潜入 app/models。我想以某种方式组织这个,但我不知道从哪里开始。

是否应该只将 AR 模型放入 app/models?或者也可以在其中放置任何域或辅助模型吗?您如何确定某物是否为模型?

所有不适合 app 的东西都应该放到 lib 中吗?或者我应该向 app 添加一些新的自定义子目录?自定义类有哪些子目录,如何划分?

您如何在您的项目中处理这个问题?我知道每个项目都有点不同,但一定有一些相似之处。

最佳答案

好问题 - 我没有具体的答案给你

但我建议查看这篇文章- http://blog.codeclimate.com/blog/2012/02/07/what-code-goes-in-the-lib-directory/- 请务必通读所有评论

在当前的项目中,我在应用程序/模型下有大量非 ActiveRecord 对象,它可以工作但不理想我将“可重复使用”的非应用程序特定代码放在 lib 下

我在副项目上尝试过的其他替代方案(假设我们有一堆命令对象)当涉及到应用程序下的命名空间时,rails 很痛苦,默认情况下它会将所有内容加载到同一命名空间

app/
commands/
products/create_command.rb # Products::CreateCommand
products/update_price_command.rb # Products::UpdatePriceCommand

或者,除了 rails 之外的所有内容都在 src 或 app_name 目录下

app/
src/
commands/
create_product.rb # Commands::CreateProduct
update_product_price.rb # Commands::UpdateProductPrice

我还没有找到一个好的解决方案,理想情况下,第二个更好,但最好不要在应用程序下有额外的目录,这样你就可以打开应用程序并查看 Controller 、命令、模型等。 .

关于ruby-on-rails - 在 Rails 应用程序中放置不适合任何地方的类的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260984/

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