Я пытаюсь добавить некоторые дополнительные функции в метод where
в ActiveRecord.Я достиг половины пути, выполнив патч обезьяны, но столкнулся с проблемой цепных запросов.
Пример:
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
Было бы здорово, если кто-нибудь поможет.