diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 10a4cba84..d0bdfc17e 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -1,3 +1,47 @@ class ApplicationRecord < ActiveRecord::Base self.abstract_class = true + + module ApiMethods + extend ActiveSupport::Concern + + def as_json(options = {}) + options ||= {} + options[:except] ||= [] + options[:except] += hidden_attributes + + options[:methods] ||= [] + options[:methods] += method_attributes + + super(options) + end + + def to_xml(options = {}, &block) + options ||= {} + + options[:except] ||= [] + options[:except] += hidden_attributes + + options[:methods] ||= [] + options[:methods] += method_attributes + + super(options, &block) + end + + def serializable_hash(*args) + hash = super(*args) + hash.transform_keys { |key| key.delete("?") } + end + + protected + + def hidden_attributes + [:uploader_ip_addr, :updater_ip_addr, :creator_ip_addr, :ip_addr] + end + + def method_attributes + [] + end + end + + include ApiMethods end diff --git a/config/initializers/active_record_api_extensions.rb b/config/initializers/active_record_api_extensions.rb index b258e8297..5c88773d3 100644 --- a/config/initializers/active_record_api_extensions.rb +++ b/config/initializers/active_record_api_extensions.rb @@ -1,54 +1,5 @@ -module Danbooru - module Extensions - module ActiveRecordApi - extend ActiveSupport::Concern - - def as_json(options = {}) - options ||= {} - options[:except] ||= [] - options[:except] += hidden_attributes - - options[:methods] ||= [] - options[:methods] += method_attributes - - super(options) - end - - def to_xml(options = {}, &block) - options ||= {} - - options[:except] ||= [] - options[:except] += hidden_attributes - - options[:methods] ||= [] - options[:methods] += method_attributes - - super(options, &block) - end - - def serializable_hash(*args) - hash = super(*args) - hash.transform_keys { |key| key.delete("?") } - end - - protected - def hidden_attributes - [:uploader_ip_addr, :updater_ip_addr, :creator_ip_addr, :ip_addr] - end - - def method_attributes - [] - end - end - end -end - class Delayed::Job def hidden_attributes [:handler] end end - -class ActiveRecord::Base - include Danbooru::Extensions::ActiveRecordApi -end