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.
--
Posted via http://www.ruby-forum.com/.
> 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
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
--
Rick R
Happy RoR3 developments!