5

RoRアプリにgem mongoidをインストールしたのですが、「undefined method `key?」というエラーが出ました。for nil:NilClass" 属性をキー関数に割り当てます。

だから私はこのモデルを持っています:

 class Author
      include Mongoid::Document
      field :name
      key :name
    end

デフォルトの scaffold コントローラーで、この 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回行いました。

4

2 に答える 2

8

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

于 2013-05-17T10:23:43.190 に答える
1

Mongoid はバージョン 3 で大幅に変更されましたgem 'mongoid', '2.0.0.beta.19'

http://mongoid.org/en/mongoid/index.htmlで mongoid のドキュメントを確認してください。

結局のところ、Mongoid 3 ではカスタムおよび複合キー フィールドはサポートされていないようです。

于 2012-10-22T18:13:23.830 に答える