Check whether you migrate up or down in Rails 3.1?

Hi!

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

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

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

Create a default user

AdminUser.create!(:email => ‘[email protected]’, :password =>
‘password’, :password_confirmation
=> ‘password’)

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

Any ideas?

Regards
Linus

On Mon, Jan 2, 2012 at 10:49 PM, Linus P. <
[email protected]> 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.

And what about:

def up
AdminUser.create!(:email => '[email protected]
', :password => ‘password’, :password_confirmation => ‘password’)
end

def down
u = AdminUser.find_by_email(‘[email protected]’)
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 V.
http://twitter.com/peter_v
http://rails.vandenabeele.com

I see.

Thank you very much Peter!

Regards
Linus