class Mutations::ModelFilter
Public Class Methods
new(name, opts = {})
click to toggle source
Calls superclass method
Mutations::InputFilter::new
# File lib/mutations/model_filter.rb, line 10 def initialize(name, opts = {}) super(opts) @name = name end
Public Instance Methods
filter(data)
click to toggle source
# File lib/mutations/model_filter.rb, line 35 def filter(data) initialize_constants! # Handle nil case if data.nil? return [nil, nil] if options[:nils] return [nil, :nils] end # Passing in attributes. Let's see if we have a builder if data.is_a?(Hash) && options[:builder] ret = options[:builder].run(data) if ret.success? data = ret.result else return [data, ret.errors] end end # We have a winner, someone passed in the correct data type! if data.is_a?(options[:class]) return [data, :new_records] if !options[:new_records] && (data.respond_to?(:new_record?) && data.new_record?) return [data, nil] end return [data, :model] end
initialize_constants!()
click to toggle source
Initialize the model class and builder
# File lib/mutations/model_filter.rb, line 16 def initialize_constants! @initialize_constants ||= begin class_const = options[:class] || @name.to_s.camelize class_const = class_const.constantize if class_const.is_a?(String) options[:class] = class_const if options[:builder] options[:builder] = options[:builder].constantize if options[:builder].is_a?(String) end true end unless Mutations.cache_constants? options[:class] = options[:class].to_s.constantize if options[:class] options[:builder] = options[:builder].to_s.constantize if options[:builder] end end