2011-01-28 7 views
1

J'ai des problèmes avec un projet de rails utilisant la mongoïde.Problème avec collection_select/mongoid/mongodb

Le problème est lors de la création/modification d'un nouveau message.

Je voudrais sélectionner un sujet/catégorie pour poste (divertissement/nouvelles/ divers).

Au début, j'essayé la méthode Railscast 238 (vers la fin) en utilisant une valeur de clé

http://railscasts.com/episodes/238-mongoid

Mais je continué à obtenir une erreur ObjectID BSON. Lors de la recherche d'une solution j'ai trouvé des sujets en discuter, mais le correctif mentionné est déjà dans la version de mongoid que j'utilise.

Alors j'ai changé les choses. Je n'ai aucune idée si c'est une bonne pratique ou pas, mais j'ai manqué d'idées. Au lieu de la méthode railscast, j'ai utilisé le code ci-dessous. Cependant, je reçois cette erreur ...

"méthode non définie des métadonnées » pour "4d4165b3fcf1ee14e0000049": String"

post model 

class Post 
    include Mongoid::Document 
    field :link 
    field :title 
    field :synopsis 
    field :added_on, :type => Date 

    validates_presence_of :link 

    embeds_many :replies 
    embeds_one :topic 
end 

topic model 

class Topic 
    include Mongoid::Document 
    field :category, :type => String 

    embedded_in :post, :inverse_of => :topics 
end 

 

_form.html.erb 
     <div class="field"> 
       <%= f.label :topic_id %> 
       <%= f.collection_select :topic, Topic.all, :id, :category, :prompt 
=> "Select a Topic" %> 
     </div> 

J'ai récemment essayé passant de embedded_in/embarque_one à references_one/referenced_in. On me dit aussi que "Topic.all" est faux, mais je ne sais pas quoi changer pour le faire fonctionner.

informations Gemfile ...

gem "mongoid", "2.0.0.rc.6" 
gem "bson_ext", "~> 1.2" 

Tout bâton dehors?

Edit:

Mise à jour à 2.0.0.rc.7 ne peut toujours pas obtenir.

J'ai essayé la méthode clé dans la vidéo railscast juste pour le plaisir. Same Erreur "BSON :: InvalidObjectId dans PostsController # update".

Répondre

0

Dans votre classe sujet, il devrait être embedded_in: poste,: inverse_of =>: sujet Vous avez: inverse_of =>: sujets, mais vous utilisez embeds_one: sujet pas beaucoup

+0

@ user650437 J'ai essayé de le faire avant et cela n'a pas fonctionné. Finalement, j'ai dû abandonner l'utilisation de l'embedded et passer à référencé. Je ne sais pas si c'est bon ou mauvais, mais c'est la seule façon de le faire fonctionner. – moctopus