2013-02-26 11 views
5

Tôi đang sử dụng mongoid với devise invitable,mongoid as_document lỗi

sau khi gán vai trò cho người sử dụng tôi phát hiện các lỗi sau

"** undefined phương pháp 'as_document' cho mảng **", bất cứ đề nghị?

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 

Tôi đang làm gì sai?

+0

Đối mặt với cùng một lỗi. Có ai giúp đuợc không? –

+1

Bạn đã viết mã chồi không cho chúng tôi biết dòng nào ném lỗi. Bạn có thể đăng bài theo dõi chồng thực hay một số thông tin khác không? – alestanis

Trả lời

1

Điều này có thể do as_document không hoạt động đối với một mảng, chỉ các đối tượng duy nhất.

+0

Không có đủ mã trong câu hỏi của bạn để cung cấp thêm chi tiết hoặc có thể sửa phiên bản. –

+0

Tôi nghĩ rằng đây là câu trả lời đúng. Hãy thử "whatever.first.as_document" trong đó bất kỳ đối tượng nào bạn đang cố gắng đại diện là gì. – jschorr

0

Đây là lỗi liên quan đến Mongoid và has_many.

Phương thức 'as_document' phải được xác định cho các mối quan hệ has_many, như được định nghĩa cho các mối quan hệ embeds_many.

Tôi sẽ làm cho một pull request có vấn đề này cố định, trong khi chờ đợi, bạn có thể xác định mongoid trong gemfile bạn như vậy:

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

Đó xảy ra với tôi với MongoId 5.1.0 khi, trong một hướng tôi đã có "embeds_many" và theo một hướng khác, tôi có "thuộc về".

Từ những gì tôi biết, ngược lại của embeds_many phải là embedded_in. Thay đổi mối quan hệ ngược lại thành embedded_in đã khắc phục vấn đề đó cho tôi.

Tôi phải thừa nhận, đây là thông báo lỗi rất mơ hồ.