定义 Rails 迁移中的方法

2024-04-26

我试图在迁移中定义一个方法,但出现未定义的方法错误:

undefined method 'do_something_specific' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x4868018>

我不想在其他地方定义它,因为它并不真正与应用程序的其余部分相关,只是与这个特定的迁移相关。

需要明确的是,我的迁移看起来像:

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

我在这里错过了什么吗?为什么我不能这样定义它?


正如您从错误消息中看到的那样,代码不是从迁移类内部调用的,而是在连接适配器内部调用的。我不确定,但这个小改变应该有效:

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

请注意,我将您的方法设为静态并以静态方式调用它。这应该可以克服任何类范围问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定义 Rails 迁移中的方法 的相关文章

随机推荐