rroblak/seed_dump

Is Active Record Associations supported?

r4do opened this issue · 2 comments

r4do commented

Hi!
If I want to get some model, and all records, belonging to it, how can I do this?
For example, I have User model, and UserAction model (User has_many :user_actions and UserAction belongs_to :user). I want to get 100 UserAction random copies, and all Users belonging to them, but no other users.
Thank you.

Try this:

actions = UserAction.order("rand()").limit(100)
users = actions.map(&:user).uniq
SeedDump.dump(users, ...)
SeedDump.dump(users, append: true, ...)

The rand() part is for MySQL; I believe other databases use random().

In rails 5 it's not because of belongs_to is required, I get this:

Comment.create!([
  {text: "qqq", post_id: 1}
])
Post.create!([
  {title: "aa", text: "aa"}
])

And of course this error:

➜  blog rails db:seed   
rails aborted!
ActiveRecord::RecordInvalid: Validation failed: Post must exist
/Users/galberto/blog/db/seeds.rb:1:in `<top (required)>'
/Users/galberto/blog/bin/rails:9:in `require'
/Users/galberto/blog/bin/rails:9:in `<top (required)>'
/Users/galberto/blog/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

But check this out http://blog.bigbinary.com/2016/02/15/rails-5-makes-belong-to-association-required-by-default.html