Seed has_many relation using mass assignment

Posted by rnd on Stack Overflow See other posts from Stack Overflow or by rnd
Published on 2012-06-10T22:19:47Z Indexed on 2012/06/10 22:40 UTC
Read the original article Hit count: 278

Here are my two models:

class Article < ActiveRecord::Base
  attr_accessible :content
  has_many :comments
end

class Comment < ActiveRecord::Base
  attr_accessible :content
  belongs_to :article
end

And I'm trying to seed the database in seed.rb using this code:

Article.create(
    [{
        content: "Hi! This is my first article!", 
        comments: [{content: "It sucks"}, {content: "Best article ever!"}]
    }], 
    without_protection: true)

However rake db:seed gives me the following error message:

rake aborted!
Comment(#28467560) expected, got Hash(#13868840)

Tasks: TOP => db:seed
(See full trace by running task with --trace)

It is possible to seed the database like this?

If yes a follow-up question: I've searched some and it seems that to do this kind of (nested?) mass assignment I need to add 'accepts_nested_attributes_for' for the attributes I want to assign. (Possibly something like 'accepts_nested_attributes_for :article' for the Comment model)

Is there a way to allow this similar to the 'without_protection: true'? Because I only want to accept this kind of mass assignment when seeding the database.

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about ruby