我在roR应用程序中安装了gem mongoid,但收到错误“未定义方法`键?” for nil:NilClass“,同时为键功能指定属性。
所以我有这个模型:
class Author
include Mongoid::Document
field :name
key :name
end
默认脚手架控制器并运行此url localhost:3000 / authors,收到此错误
NoMethodError in AuthorsController#index
undefined method `key?' for nil:NilClass
Rails.root: C:/Users/Jeremy/RubymineProjects/university
宝石文件:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem "mongoid", "~> 3.0.0"
gem "bson_ext", "~> 1.2"
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
我在这里使用了指南http://railscasts.com/episodes/238-mongoid?view=asciicast,两次都做了同样的事情。
答案 0 :(得分:7)
已删除了Model.identity和 Model.key 。对于自定义ID,用户 现在必须覆盖_id字段。当默认值是proc时, 在设置了所有其他属性后,应用默认值。
class Band
include Mongoid::Document
field :_id, type: String, default: ->{ name } # which was `key :name` before v3
end
答案 1 :(得分:1)
Mongoid在版本3中发生了很大的变化。(asciicast想要gem 'mongoid', '2.0.0.beta.19'
...)
检查http://mongoid.org/en/mongoid/index.html
上的mongoid文档最后,似乎Mongoid 3
中不支持自定义和合成的关键字段