如何访问模块rails中的模型类?

时间:2014-10-05 03:31:05

标签: ruby-on-rails ruby rspec

这是我在lib / p_table.rb中的模块:

class PTable
    .
    .
    .
    def convertElmentToMass(el)
         @el = Element.find_by_symbol(el)
    end
end

如果我的app / models / element.rb中有任何相关性,那么这是我的模型

class Element < ActiveRecord::Base
end

出于某种原因,当我尝试测试我的convertElementToMass函数时,它会显示uninitialized constant PTable::Element。这很奇怪,因为我应该能够在任何地方调用我的模型类吗?

这是我在lib / controllers / module_spec.rb中的rspec

require 'spec_helper.rb'
require 'p_table'

describe PTable do
    class DummyClass
    end 

    before(:all) do
        @dummy = DummyClass.new
        @dummy.extend PTable
    end

    describe "testf" do
        it "saves the world" do
            expect(@dummy.(["Na", '2'])).to eq(2.34)
        end
    end
end

1 个答案:

答案 0 :(得分:4)

仅使用::Element代替Element,它会起作用。

默认情况下,Rails自动加载器会尝试在模块内部找到类,方法是包含::,让系统知道您希望根模块上有Element类。