Ruby on rails 我应该将既不是模型、视图也不是控制器的类文件放在哪里?

Ruby on rails 我应该将既不是模型、视图也不是控制器的类文件放在哪里?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,我有一个rails应用程序。对于我的一个模型,我创建了一个特定的类,除了在这个特定的模型中,它可能永远不会在其他任何地方使用 我应该把这个类对应的文件和它对应的测试文件放在哪里 我目前将它放在/lib中,但由于它永远不会在其他地方使用,我认为这不是它的正确位置。我认为这个问题没有绝对正确的答案,因为类可以放在几个不同的位置,所有这些位置都可以让程序使用,这更多的是组织偏好的问题 tl;lib博士很好 选项: 模型目录 如果类与程序域相关,则将其放在此处可能有意义。您甚至可以将它命名为名称空间,

我有一个rails应用程序。对于我的一个模型,我创建了一个特定的类,除了在这个特定的模型中,它可能永远不会在其他任何地方使用

我应该把这个类对应的文件和它对应的测试文件放在哪里


我目前将它放在/lib中,但由于它永远不会在其他地方使用,我认为这不是它的正确位置。

我认为这个问题没有绝对正确的答案,因为类可以放在几个不同的位置,所有这些位置都可以让程序使用,这更多的是组织偏好的问题

tl;lib博士很好

选项:
  • 模型目录
    • 如果类与程序域相关,则将其放在此处可能有意义。您甚至可以将它命名为名称空间,并将其放在一个目录中,以使其脱离主目录,并相对于其函数对其进行组织
    • app/models/user/password.rb的
      user::password
  • 库目录
    • 如果类与程序域正交,则lib可能是正确的位置。如果领域特定的东西阻塞了你的模型,也可以放在这里
    • lib/soap\u client.rb
  • 在使用它的模型的文件中
    • 可能不是最好的选择,因为它隐藏了类的存在(如果您正在查看目录结构)
    • 比如定制
      异常
      类之类的东西

  • 我不认为这个问题有一个绝对正确的答案,因为课程可以放在几个不同的位置,所有这些都可以让课程使用,这更多的是组织偏好的问题

    tl;lib博士很好

    选项:
  • 模型目录
    • 如果类与程序域相关,则将其放在此处可能有意义。您甚至可以将它命名为名称空间,并将其放在一个目录中,以使其脱离主目录,并相对于其函数对其进行组织
    • app/models/user/password.rb的
      user::password
  • 库目录
    • 如果类与程序域正交,则lib可能是正确的位置。如果领域特定的东西阻塞了你的模型,也可以放在这里
    • lib/soap\u client.rb
  • 在使用它的模型的文件中
    • 可能不是最好的选择,因为它隐藏了类的存在(如果您正在查看目录结构)
    • 比如定制
      异常
      类之类的东西

  • 正如@jstim所说,没有具体的方法

    但您可以使用演示者或装饰来实现此目的

    在应用程序目录中创建一个文件夹作为演示者或装饰者

    创建一个文件some_file.eb 在这种情况下,您可以创建该类并在您想要的任何控制器中使用它

    app/presenters/some_file.eb

    class ClassName
      def your_method
      end
    end
    

    正如@jstim所说,没有具体的方法

    但您可以使用演示者或装饰来实现此目的

    在应用程序目录中创建一个文件夹作为演示者或装饰者

    创建一个文件some_file.eb 在这种情况下,您可以创建该类并在您想要的任何控制器中使用它

    app/presenters/some_file.eb

    class ClassName
      def your_method
      end
    end
    

    在选项1中,我是否必须更改自动加载路径?不,我相信它应该加载其中的所有内容。只有一种方法可以找到答案:)@PierreMichard不,正如@jstim所说,Rails将自动加载app/目录下的所有内容。您甚至可以拥有自己的子目录,例如将包含的
    app/decorators
    。在选项1中,我是否必须更改自动加载路径?不,我相信它应该加载其中的所有内容。只有一种方法可以找到答案:)@PierreMichard不,正如@jstim所说,Rails将自动加载app/目录下的所有内容。您甚至可以拥有自己的子目录,例如
    app/decorators
    ,这些子目录将包括在内。