如何在Helper文件中包含重写的模型类

时间:2014-12-14 22:21:38

标签: ruby-on-rails ruby ruby-on-rails-3.2

我有一个模型app / models / my_model.rb

class MyModel < ActiveRecord::Base
  ...
end

我在app / models / my_model_r_r.rb中的MyModel中覆盖了另一个类

class MyModelRR < MyModel
  ...
end

我在app / helpers / v2 / some_helper.rb中有一个帮助文件,我想使用MyModelRR

module V2::SomeHelper
  # Want to use MyModelRR
end

我尝试使用:

# Inside some_helper.rb
require 'app/models/my_model_r_r.rb

# Throws error -- 
<home>/.rvm/gems/ruby-2.1.4/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- app/models/my_model_r_r.rb (LoadError)

在此之后,我将my_model_r_r.rb移到app / models / read_only中,并将其添加到application.rb中:

config.autoload_paths += Dir["#{config.root}/app/models/read_only"]

# Throws error:
NameError (uninitialized constant V2::SomeHelper::MyModelRR):

任何想法如何解决这个问题?

我使用在Ruby 1.9.3上运行的Rails 3.2(与Ruby 2.1相同的错误)

编辑:当我切换到Ruby 1.8.7时,require 'app/models/my_model_r_r.rb'完全正常。

1 个答案:

答案 0 :(得分:0)

这是因为Ruby 1.9.2+并没有自动添加&#34;。&#34;到路径,这导致了这个错误。将此更改为

require './app/models/my_model_r_r.rb'

工作得很好。感谢&#34; Tin Man&#34;对此。