overide reindex searchkick method error :NoMethodError (super: no superclass method `reindex' for #<Searchkick::RecordIndexer
overide reindex searchkick method error :NoMethodError (super: no superclass method `reindex' for #<Searchkick::RecordIndexer
我们正在尝试覆盖 Searchkick 的重新索引方法,以避免在我们使用本地环境时重新索引。
所以我们创建了一个 initializers/record_indexer.rb :
class Searchkick::RecordIndexer
def reindex(options= {})
unless Rails.env == 'local'
super(options)
end
end
end
当我尝试更新导致我的 'indexed record' 重新索引的关联模型时,它会抛出一个 NoMethodError(超级:#
我注意到 searchkick 至少有 3 个重新索引方法:
- Searchkick::RecordIndexer(我猜是 Foo.first.reindex)
- Searchkick::Index(我猜是 Foo.reindex)
- Searchkick::模型(对于 ??)
有人在 Gem Searckick (v4.4.2) 的 #reindex 方法上遇到过这种问题吗?
在您的代码中,您完全用您的实现替换了一个方法。
如果你重写了一个方法,并想调用原来的方法,你有两个选择:
用别名存储原始方法
class Searchkick::RecordIndexer
alias_method :orig_reindex, :reindex
def reindex(options={})
unless Rails.env == 'local'
orig_reindex(options)
end
end
end
添加一个模块
module YourPatch
def reindex(options={})
unless Rails.env == 'local'
super # no need to specify args if it's just pass-through
end
end
end
Searchkick::RecordIndexer.prepend(YourPatch)
我们正在尝试覆盖 Searchkick 的重新索引方法,以避免在我们使用本地环境时重新索引。
所以我们创建了一个 initializers/record_indexer.rb :
class Searchkick::RecordIndexer
def reindex(options= {})
unless Rails.env == 'local'
super(options)
end
end
end
当我尝试更新导致我的 'indexed record' 重新索引的关联模型时,它会抛出一个 NoMethodError(超级:# 我注意到 searchkick 至少有 3 个重新索引方法: 有人在 Gem Searckick (v4.4.2) 的 #reindex 方法上遇到过这种问题吗?
在您的代码中,您完全用您的实现替换了一个方法。
如果你重写了一个方法,并想调用原来的方法,你有两个选择:
用别名存储原始方法
class Searchkick::RecordIndexer alias_method :orig_reindex, :reindex def reindex(options={}) unless Rails.env == 'local' orig_reindex(options) end end end
添加一个模块
module YourPatch def reindex(options={}) unless Rails.env == 'local' super # no need to specify args if it's just pass-through end end end Searchkick::RecordIndexer.prepend(YourPatch)