如何访问我的模块导轨内的模型类?

use*_*534 2 ruby rspec ruby-on-rails

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

class PTable
    .
    .
    .
    def convertElmentToMass(el)
         @el = Element.find_by_symbol(el)
    end
end
Run Code Online (Sandbox Code Playgroud)

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

class Element < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我尝试测试我的 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
Run Code Online (Sandbox Code Playgroud)

Mau*_*res 5

使用::ElementElement不仅仅是,它会起作用。

默认情况下,Rails 自动加载器将尝试在模块内部查找该类,方法是在根模块中包含::您让系统知道您想要Element该类的方法。