在rails中向控制器添加类的正确方法是什么?

时间:2013-07-25 18:03:02

标签: ruby-on-rails class

如果我需要在rails中为我的控制器添加(特定于项目的)类,那么正确的放置方式/位置是什么?"包括"他们/那里.rb文件? (引用:不是ruby关键字包括)

我是rails的新手,并没有找到 正确的方法。 LIB听起来像更多的公共图书馆 - 我所学到的 - 在开发模式下默认不重新加载。

当然,我可以全部放入controler.rb,但是......


对我而言:

首先:没有规则,如果你记住(或像我一样学习)rails规则: NameOfCla - > name_of_cla(.rb)< - 不使用类作为清除词

按类别命名您的课程:

class ExtendCon #<--- not using controller here for clearence
    ....

将它放在文件extend_con.rb中,请等待路径说明。如果你把你的课程命名为“MYGreatThing&#39;这将是&#39; m_y_great_thing&#39; (从不测试过),所以请避免使用chineese charachters

如果您的控制器使用

@letssee=ExtendCon.new

rails自己学习该类和文件(extend_con)。我仍然没有弄清楚是否需要重启服务器。 (第一次)

选择放置文件的路径:(我更喜欢Daves方式)app/myexten或您喜欢的内容,使其成为&#39; app&#39;具体而且仍然不及标准的轨道事物&#39;

如果你不喜欢我(我把它放在app / ontrollers中) 把你选择的路径放进去 config/application.rb喜欢(评论可以找到它)

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/app/controllers)
config.autoload_paths += %W(#{config.root}/app/myexten)   

这个适合我的所有模式,包括&#34;开发者&#34;而且我不需要把我自己的&#34; app / lib中的东西

2 个答案:

答案 0 :(得分:0)

取决于。

我倾向于将显式使用的库代码(例如,实例化,注入等应用到app级工件中)放入app/xxx,其中xxx表示事物的“类型”,如{{1 },decorators

魔法的东西往往会在services中结束,比如猴子补丁,建筑级工件等等。

任何地方的代码都可以添加到自动加载路径中,由初始化程序自动生成等等。

答案 1 :(得分:0)

Rails 4附带了一个名为Concerments的控制器的内部目录。你可以尝试使用它。

app/controlls/concerns

如果您有concerns/foo_bar.rb,请按以下方式添加:

class FooController < ApplicationController
  include FooBar
end

模型也有自己的关注目录。我发现这种方法很有用,它可以应用于Rails 3.您只需将目录添加到加载路径。