I'm trying to define a method inside a migration, but I'm getting an undefined method error:
undefined method 'do_something_specific' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x4868018>
I'd rather not define it elsewhere, because it doesn't really relate to the rest of the application, just this specific migration.
To be clear, my migration looks something like:
class DoSomethingSpectacular < ActiveRecord::Migration
def self.up
do_something_specific(1, 2)
end
def self.down
end
private
def do_something_specific(p_1, p_2)
# something happens here...
end
end
Am I missing something here? Why can't I define this like this?
As you may see from the error message the code isn't called from within your migration class but inside the connection adapter. I'm not sure, but this small change should work:
class DoSomethingSpectacular < ActiveRecord::Migration
def self.up
DoSomethingSpectacular.do_something_specific(1, 2)
end
def self.down
end
private
def self.do_something_specific(p_1, p_2)
# something happens here...
end
end
Note that I made your method static and called it in a static way. This should overcome any class scope issues.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With