2012-07-17 5 views
3

J'utilise mongoid pour la première fois et j'ai un problème pour créer une association has_many dans une usine pour mes spécifications.Mongoid has_many association et factorygirl

Le scénario est le suivant:

J'ai la classe de groupe:

class Group 
    include Mongoid::Document 
    field :name, :type => String 
end 

Et j'ai une classe d'exercice. Un exercice peut appartenir à plusieurs groupes. La classe d'exercices est actuellement définie comme ceci:

class Exercise 
    include Mongoid::Document 
    field :name, :type => String 
    field :description, :type => String 

    has_many :groups 

    validates_presence_of :name, :description 
end 

Je veux utiliser factorygirl pour créer des instances pour les spécifications. Je me bats avec la façon de le faire.

Actuellement, mon usine d'exercice ressemble à ceci;

FactoryGirl.define do 
    factory :exercise do 
    name "Preacher curls" 
    description "Do something" 

    after(:build) do |exercise| 
     exercise.groups << FactoryGirl.build(:group) 
    end 
    end 
end 

Cela provoque l'erreur suivante:

NoMethodError: 
    undefined method `=' for #<Group _id: 4fbc6f5a26a3181742000004, _type: nil, name: "Arms"> 

Comment puis-je créer l'usine d'exercice correctement pour ajouter les group_ids?

Répondre

0

Essayez d'ajouter

belongs_to :exercise 

dans votre classe groupe

Il devrait ressembler à ceci:

class Group 
    include Mongoid::Document 
    field :name, :type => String 
    belongs_to :exercise 
end 
Questions connexes