【发布时间】:2014-04-12 02:16:13
【问题描述】:
背景
我对 Rails 还很陌生。我正在与 Ruby 2.1.1 和 Rails 4.1 合作,并且已经阅读了很多书籍和教程,但还没有完全理解什么是保持控制器精简的最佳方法。
看起来在 Rails 4 中,concerns 可用于模型和控制器。至少对于控制器而言,主要目的似乎是帮助保持路由和控制器DRY。一个很好的例子似乎是defensible example at codeschool。
我还阅读了一些关于类似问题的问题,但找不到我认为完全匹配的内容,尤其是在 Rails 4 的上下文中。我所看到的似乎表明可以创建自定义类或模块,然后在控制器操作中调用它。
具体问题
- 我有一个控制器,其中大部分操作都很精简,但有一个必须进行大量数据处理,这个控制器已经变得非常大。
- 我在控制器中创建了一些私有
helper methods以将处理分成更小的部分 - 但似乎这些 应该几乎组合成一个模块或类? - 数据处理确实是该控制器特有的,不太可能在其他地方使用
问题
- 我觉得这个控制器不应该有一个大而臃肿的动作是正确的吗?或者说控制器的action变大这样正常吗?
- 关注点是否旨在帮助减少这种情况?还是它们更有助于不同控制器之间共享操作的 DRY 方面?
- 类或模块会是一个好的解决方案吗?创建自定义类/方法来帮助保持控制器精简是典型的做法吗?
- 如果类/模块方法是一个好的解决方案,那么如何选择模块与类?
- 如果类/模块方法是一个很好的解决方案,它们应该放在哪里以及应该如何加载/调用它们? (如果它们只特定于一个控制器,它们似乎不应该是全局“帮助”函数)
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 controller dry