mongoid模型的关键不起作用

时间:2012-10-22 18:08:18

标签: ruby-on-rails mongodb mongoid

我在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,两次都做了同样的事情。

2 个答案:

答案 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

文档:http://mongoid.org/en/mongoid/docs/upgrading.html

答案 1 :(得分:1)

Mongoid在版本3中发生了很大的变化。(asciicast想要gem 'mongoid', '2.0.0.beta.19' ...)

检查http://mongoid.org/en/mongoid/index.html

上的mongoid文档

最后,似乎Mongoid 3

中不支持自定义和合成的关键字段