5

我正在使用 mongoid 设计邀请,

为用户分配角色后,我发现以下错误

“**未定义的方法 `as_document' for Array **”,有什么建议吗?

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

我在做什么错?

4

3 回答 3

1

这可能是因为as_document不适用于数组,仅适用于单个对象。

于 2013-05-19T00:33:09.557 回答
0

这是 Mongoid 和 has_many 关系的错误。

必须为 has_many 关系定义方法“as_document”,就像为 embeds_many 关系定义一样。

我将发出拉取请求以修复此问题,同时您可以在 gemfile 中定义 mongoid ,如下所示:

gem 'mongoid', :git => https://github.com/mrjlynch.git
于 2013-08-09T04:49:12.780 回答
0

MongoId 5.1.0 发生在我身上时,在一个方向我有“ embeds_many ”,而在另一个方向我有“ belongs_to ”。

据我所知, embeds_many 的反面应该是embedded_in。将反向关系更改为embedded_in为我解决了这个问题。

我不得不承认,这是一个非常晦涩的错误信息。

于 2017-04-06T16:03:41.230 回答