我正在尝试向ActiveRecord的where
方法中添加一些其他功能。我通过做猴子补丁达到了一半,但是面临链查询的问题。
例如:
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
如果有人帮助,那就太好了。