Ruby on Rails Monday, January 2, 2012

On Mon, Jan 2, 2012 at 10:49 PM, Linus Pettersson <linus.pettersson@gmail.com> wrote:
Hi!

In Rails 3.1 there is only one method for migrations called 'change'.

Not exaclty. up and down still exist (but now instance methods instead of
class methods).

Google ("rails guide migrations").
 

I want to run some code in a migration only when migrating up, not down. Is that possible?

Yes.
 

The issue I have is that this code is inside a migration file from Active Admin:

# Create a default user
AdminUser.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')

So, when I try to migrate down this will fail because there is already a user present.


And what about:

def up
  AdminUser.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')
end

def down
  u = AdminUser.find_by_email('admin@example.com')
  u.destroy
end

  

Any ideas?


If the down migration is really impossible to do (which can happen;
e.g because you miss data to reset everything to the original state)
than you can raise ActiveRecord::IrreversibleMigration exception
in the down migration.

HTH,

Peter

-- 
Peter Vandenabeele
http://twitter.com/peter_v

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment