Mongoid中的NoMethodError

时间:2014-08-15 06:12:01

标签: ruby-on-rails ruby mongoid

我启动了一个有效的Rails应用程序。但升级到rails 4.1.4之后,我在TyperController中得到NoM​​ethodError #index未定义方法`first'对于Typer:app / controllers / typer_controller.rb中的模块:第35行

@typer = Typer.first

我用Google搜索了一下并完成了我发现的所有预防措施,但当然我错过了一些东西,只是不知道是什么。

我的Gemfile

gem 'rails', '4.1.4'
gem 'mongoid', '~> 4', github: 'mongoid/mongoid'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development

我的配置/ application.rb

require "active_model/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
# require "sprockets/railtie"
require "rails/test_unit/railtie"
Bundler.require(*Rails.groups)

module Typer
  class Application < Rails::Application
  end
end

我的模型文件typer.rb

class Typer
  include Mongoid::Document
#  include Mongoid::Timestamps
    field :name, type: String
    field :convert, type: Hash 
#  belongs_to :user
end

1 个答案:

答案 0 :(得分:4)

这是名称冲突的典型例子。

模块Typer首先被加载(毕竟它是一个app命名空间)。之后,对Typer的任何引用都将解析为该模块。您的模型永远不会(自动)加载。

解决方案很简单:只需重命名主模块或模型。