2010-09-03 17 views
3

J'ai ce genre de relation:Factory Girl avec a beaucoup relation (et un attribut protégé)

class Article < ActiveRecord::Base 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :article 
    attr_protected :article_id 
end 

Le scénario par défaut à l'intérieur des contrôleurs ressemble:

@article = Article.create(:title => "foobar") 
@comment = @article.comments.create(:content => "w00t") 

j'avais essayé d'écrire les usines:

Factory.define :article do |f| 
    f.title "Hello, world" 
end 

Factory.define :comment do |f| 
    f.content "Awesome!" 
    f.association :article 
end 

Mais ma syntaxe n'est pas correcte à propos de l'association. C'est un peu compliqué à cause de l'attribut protected article_id du commentaire. Donc, je pense que cela devrait être mieux si je déclare l'association à l'intérieur de l'usine d'articles, mais je ne vois pas comment traiter.

Merci pour toute aide.

Répondre

4

Vous devriez faire

Factory.define :comment do |f| 
    f.content "Awesome!" 
    f.article { |a| a.association(:article) } 
end 
+0

Merci beaucoup, MB14. Joyeux développements RoR3! :) –