Using Factory Girl with has many relationship


I have this kind of relation:

  class Article < ActiveRecord::Base     has_many :comments   end

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

The default scenario inside controllers looks like:

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

I had tried to write those factories:

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

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

But my syntax is not correct about the association. It's a little bit tricky because of the comment's article_id protected attribute. So I think this should be better if I declare the association inside the article factory, but I don't see how to process.

Thanks for any help.

I'm still pretty newb, so I could be way off here, but I think you need to define the factory that represents the association?

Factory.define :comment do |f|   f.content "Awesome!"   f.association :article, :factory => :article end

It's also a bit confusing because your naming your factories the same as the property name. It might be more clear if you set them with more 'real' names like

Factory.define :hello_world_article, :class => Article do |f|    f.title "Hello, world" end

Factory.define :awesome_comment, :class => Comment do |f| f.content "Awesome!" f.association :article, :factory => :hello_world_article end

Try this

Factory.define :article do |f|     f.title "Hello, world"     f.comments {|comments| [comments.association(::comment)]}   end

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

Many thanks for your help. Very appreciated.

Happy RoR3 developments!