不是模型、视图、控制器或帮助器的Rails代码应该放在哪里?

8

我希望在Rails应用程序中,几个控制器之间共享与视图无关的代码。请问我应该将它放在哪个目录结构中?

编辑:所讨论的代码是所有控制器都会使用的代码,用于确定它们如何呈现模型数据。


这与数据库实体无关,也不是模型代码。 - Bruno Antunes
1
模型不需要与数据库相关。它们只是系统使用的数据的表示,无论是否存储。 - Pesto
这是什么?你只说了它不是什么,但没有说它是什么。 - txwikinger
5个回答

8
如果代码类似于具有实用方法的模块,这些方法可以放置在 lib 文件夹中。或者,如果控制器共享行为,则可以为其中一些创建一个公共超类。
请提供您所考虑的代码示例。

5
如果这是“所有控制器都使用的东西”,我会将它放在所有控制器都使用的基类中。我想到了“application_controller”。

2

我一直在lib中创建模块,为其他类提供代码。

这是一个缩写示例模块,定义了可以从不同控制器实例化的视图值。

module ControllerDefaultValues
  def default_value_for_some_controller()
    @controller_name = "some_controller"
  end
end

只需在你的类中包含该模块即可使用:

class SearchesController
  include ControllerDefaultValues
  #
  def search_some_controller
    default_value_for_some_controller()
    render(:partial => "search_results")
  end
end

这种方法的主要好处在于它使你的控制器目录专注于控制器,而模型目录则专注于逻辑。

0

个人认为,如果与控制器相关,则可以将其放在控制器目录中,但是应标记为模块,例如app/controllers/what_am_i_module.rb,因为它是特定于开发中的应用程序。

对我来说,lib似乎是一个放置框架/核心增强或猴子补丁的地方,这些内容不特定于应用程序。


0
如果将其用于所有控制器,请将其放在application_controller.rb中。
所有控制器都继承自ApplicationController,因此它们都可以访问它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接