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