新手问题 怎么在 Rails 里面使用自定义类

pp158825968 · 2016年06月20日 · 最后由 easonlovewan 回复于 2016年06月22日 · 3717 次阅读

我有这么一个类 写在 bill_test.rb 里面

class BillTest
    def check
        puts "Ass  We Can"
    end
end

我要把 bill_test.rb 放在 Rails 的哪里 怎么做才能调用用到 BillTest 类 怎样才能成功调用到里面的 check 方法

放到 config/initialize 文件夹,即可

initializer 里的在 reload 的时候不会 reload,放 lib 或者 model


噫,是 re 厨(呕

#1 楼 @jiyuhang110 谢谢 #2 楼 @mizuhashi 同时还要这样子 require 'bill_test' 就能调用了 感谢楼上两位 ♂赞美之心♂

#3 楼 @pp158825968 放到 lib 里,然后在 config/application.rb 下将 lib 文件夹加到 rails 的加载路径中:

# config/application.rb

module YourAppName
  class Application < Rails::Application
    # 将lib文件夹加到rails的加载路径中
    config.autoload_paths << Rails.root.join('lib')
  end
end

这样的话不需要执行require 'bill_test'也能直接使用了

5 楼 已删除
6 楼 已删除

自定义类放到 lib 里,创建一个 config/initializers/require.rb,加载指定内容。 共用 类/module 放到 concerns 里,不用加载。 models 里只写数据库操作相关,逻辑包装都放到 lib 中。

可以放到 app/model/concerns/目录下或者 app/controller/concerns/目录下,然后在 model 或者 controller 里面 include 调用,这两个目录是自动加载的

数据类放到 models 里,封装的功能模块类放到 lib 下。

同意上面的解决方案,但是通常我自己遇到自定义类的情况: 放到 models 里边儿的自定义文件 xxx 下 application.rb 这样改加一个 autoload

config.autoload_paths += %W(#{config.root}/app/models/xxx)

然后就可以实例一个对象,调用 check 方法了

BillTest.new.check
需要 登录 后方可回复, 如果你还没有账号请 注册新账号