当前位置:  开发笔记 > 编程语言 > 正文

如何组织太胖的Rails模型?

如何解决《如何组织太胖的Rails模型?》经验,为你挑选了2个好方法。

将逻辑从控制器转移到模型中是一种很好的做法.但是在任何复杂的系统中,即使大多数方法按照Rails方式是一个衬里,这也总是导致一个非常大的文件.

我使出车型分裂成其他模块和包括他们在原来的模式,例如model_flags,model_validation等任何人有更好的办法?

编辑:我选择了一个建议使用ActiveConcern的新答案.此外,对于任何对组织代码感兴趣的人,本文" 使ActiveRecord模型变薄 "应该会有很大帮助.



1> tjstankus..:

我意识到这是一个相当古老的问题,并且已被标记为已回答,但它仍然具有良好的Google汁液,因此我认为值得添加...

Rails 3引入了ActiveSupport :: Concern,它可用于模块化模型之间共享的行为.或者,就此而言,减少变得太胖的模型.

DHH本人在这里提供了一个很好的,简洁的例子:

https://gist.github.com/1014971


我认为值得指出的是,担忧只是解决模特肥胖问题的一种方法.正如srboisvert指出的那样,在选择将模型分解为关注点之前,最好先询问对象设计.这是一篇讨论的文章:http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

2> srboisvert..:

我不会出于某些原因这样做.

首先,你违背了这样的假设:事情应该是他们应该在哪里,这可能是最初对铁路的最大奖励.如果您在模型中粘贴模型,新人可以轻松地进入您的项目并轻松导航.如果你把它拔出来,你只需添加一个延迟和一些混乱,特别是如果删除某个模块的东西的唯一逻辑是减少模型大小.

其次,你从中获得几乎没有任何东西,你会失去一些东 如今,当几乎所有编辑器和IDE都能减轻大文件的导航难度时,文件大小并不重要.将内容移动到模块实际上需要一些现代的易用性,并且需要您和您的同事或未来的维护者在处理一个模型时跳转几个文件.

这就是说我怀疑拥有的铁杆最佳实践团队会告诉你的是,如果你的模型那么大而复杂,那么你的设计就有缺陷,你的模型可能代表了几个可以分成模型而不是模块的东西.


在Rails中,大多数行为无法在“应有的位置”找到。另外,通过将模块包含到主模型文件中,您已经在告诉其他人要看的地方。我同意导航大文件并不是那么困难,但是如何拆分模型?首先使用哪种方法?
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有