2013-02-26 12 views
5

Używam mongoid ze opracować invitable,mongoid as_document błąd

po przypisaniu ról użytkownika znalazłem następujący błąd

"** niezdefiniowana metoda` as_document”dla Array **", jakieś sugestie?

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 

Co złego robię?

+0

Wobec tego samego błędu. Czy ktoś może ci pomóc? –

+1

Wysłałeś bud kod nie powiedział nam, co linia wyrzuca błąd. Czy możesz opublikować prawdziwy ślad stosu lub trochę więcej informacji? – alestanis

Odpowiedz

1

Jest to prawdopodobnie spowodowane tym, że as_document nie działa w stosunku do tablicy, tylko pojedyncze obiekty.

+0

W Twoim pytaniu jest za mało kodu, aby podać dalsze szczegóły lub możliwą poprawioną wersję. –

+0

Myślę, że to jest poprawna odpowiedź. Wypróbuj "whatever.first.as_document", gdziekolwiek jest obiekt, który próbujesz reprezentować. – jschorr

0

To jest błąd związany z relacjami Mongoid i has_many.

Metoda "as_document" musi być zdefiniowana dla relacji has_many, tak jak jest zdefiniowana dla relacji embeds_many.

mam zamiar zrobić pull request mieć ten problem rozwiązany, w międzyczasie można zdefiniować mongoid w swoim gemfile tak:

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

To zdarzyło mi się z MongoId 5.1.0, gdy w jednym kierunek miałem "embeds_many", aw drugim kierunku miałem "belongs_to".

Z tego, co wiem, odwrotną stronę embeds_many będzie osadzona_na. Zmiana relacji odwrotnej na embedded_in rozwiązała ten problem dla mnie.

Muszę przyznać, jest to bardzo niejasny komunikat o błędzie.