2013-02-26 6 views
5

私は、次のエラーmongoid as_documentエラー

「**アレイのための未定義のメソッド `as_document」**」、任意の提案を見つけましたか?

invitable = find_or_initialize_with_error_by(:email, attributes[:email]) 
invitable.attributes = attributes 
# scope_id attribute does not set properly 
invitable.roles.map {|r| r.scope_id = attributes[:roles_attributes]["0"][:scope_id]} 

if invitable.persisted? && !invitable.invited? 
    invitable.errors.add(:email, :taken) 
elsif invitable.email.present? && invitable.email.match(Devise.email_regexp) 
    invitable.invite! 
end 

私は何をしていますか?

+0

同じエラーが発生しました。誰でも助けてくれますか? –

+1

あなたはコードを投稿しましたが、どの行がエラーをスローするか教えてくれませんでした。実際のスタックトレースやその他の情報を投稿できますか? – alestanis

答えて

1

これはおそらくas_documentが配列に対して機能しないため、単一のオブジェクトのみである可能性があります。

+0

あなたの質問には、詳細や修正可能なバージョンを示すのに十分なコードがありません。 –

+0

これは正解だと思います。 "whatever.first.as_document"を試してください。ここには、表現しようとしているオブジェクトがあります。 – jschorr

0

これはMongoidとhas_many関係のバグです。

メソッド 'as_document'は、embeds_many関係に定義されているように、has_many関係に定義する必要があります。

私はそうのようなあなたのgemfileでmongoidを定義することができ、その間に、この問題が修正持ってpull requestを作るつもりです:MongoId 5.1.0で私に起こっ

gem 'mongoid', :git => https://github.com/mrjlynch.git 
0

とき、一つで私は "embeds_many"を持っていて、もう一方は "belongs_to"でした。

私が知っていることから、embeds_manyの逆は埋め込み_となります。 逆の関係をに変更しました。埋め込み_は私の問題を修正しました。

これは非常にわかりにくいエラーメッセージです。