Переопределение метода модуля от драгоценного камня в направляющих

Вот как это сделать с split.

var input = "255,255,255,10,251,91,31,4,220,220,220,1";
var inputArray = input.split(",");
var outputArray = [];
for(let i = 0;i<inputArray.length;i++)
{
  if(i%4 != 3)
  {
    outputArray.push(inputArray[i]);
  }
}
var output = outputArray.join(",");
console.log(output);

48
задан Dave Smylie 2 August 2015 в 13:11
поделиться

2 ответа

То, что Вы делаете, будет работать, но Ваш код должен быть похожим на это:

module WillPaginate
  module Finder
    module ClassMethods
      def paginate_by_sql(sql, options)
        # your code here
      end
    end
  end
end

, Другими словами, войдите в finder.rb, удалите все кроме заголовков модуля и метода, который Вы хотите переопределить, затем сохранить в файл в lib и включать в environment.rb. Вуаля, мгновенный патч обезьяны!

29
ответ дан Sarah Mei 7 November 2019 в 12:08
поделиться

Более краткое решение:

WillPaginate::Finder::ClassMethods.module_eval do
 def paginate_by_sql sql, options
   # Your code here
 end
end

Поместите код в файл инициализатора в config / initializers. Это правильное место для размещения кода, который должен запускаться при загрузке среды. Это также лучше организует ваш код, делая более понятным намерение каждого файла, поэтому ошибки будет легче отслеживать. Не загромождайте environment.rb!

67
ответ дан 7 November 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: