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 => ‘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.
Any ideas?
Regards
Linus
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
I see.
Thank you very much Peter!
Regards
Linus