我启动了一个有效的Rails应用程序。但升级到rails 4.1.4之后,我在TyperController中得到NoMethodError #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
答案 0 :(得分:4)
这是名称冲突的典型例子。
模块Typer
首先被加载(毕竟它是一个app命名空间)。之后,对Typer
的任何引用都将解析为该模块。您的模型永远不会(自动)加载。
解决方案很简单:只需重命名主模块或模型。