我试图在迁移中定义一个方法,但出现未定义的方法错误:
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(使用前将#替换为@)