Обезьяна исправления ActiveRecord "где" метод - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь добавить некоторые дополнительные функции в метод where в ActiveRecord.Я достиг половины пути, выполнив патч обезьяны, но столкнулся с проблемой цепных запросов.

Пример:

  1. User.where(id: 10, name: 'Blob')

Когда я выполняю приведенный выше код, мойновый функционал работает как положено.Он вызывает модифицированный метод where и выдает параметры запроса как query_params = { id: 10, name: 'Blob' }

User.where(id: 10).where(name: 'Blob')

В этом случае я получаю только query_params = { id: 10 }

Я просто печатаю параметры запроса и делегирую суперклассу:

def where(query, *values) 
  query.each do |key, value| 
    if value.is_a?(Array) and value.flatten != value 
      Rails.logger.debug "Where Clause Params" 
      Rails.logger.debug "#{query}" 
      Rails.logger.debug "#{caller.join("\n")}" 
      break 
    end  
  end 
  super 
end 

Вот так я расширяю измененный where файл в ApplicationRecord

 ApplicationRecord.extend CoreExtensions::ApplicationRecord::WhereLog

Было бы здорово, если кто-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...