module ApiableModelErrors
Public Class Methods
included(base)
click to toggle source
# File lib/apiable_model_errors.rb, line 5 def self.included(base) base.alias_method_chain :add, :api_errors base.alias_method_chain :clear, :api_errors base.alias_method_chain :delete, :api_errors end
Public Instance Methods
add_with_api_errors(attribute, message = :invalid, options = {})
click to toggle source
# File lib/apiable_model_errors.rb, line 45 def add_with_api_errors(attribute, message = :invalid, options = {}) add_without_api_errors(attribute, message, options).tap do errors_for_api[attribute] ||= [] errors_for_api[attribute] << [message, options || {}] end end
clear_with_api_errors()
click to toggle source
# File lib/apiable_model_errors.rb, line 33 def clear_with_api_errors clear_without_api_errors.tap do @errors_for_api = {} end end
delete_with_api_errors(key)
click to toggle source
# File lib/apiable_model_errors.rb, line 39 def delete_with_api_errors(key) delete_without_api_errors(key).tap do errors_for_api.delete(key) end end
errors_for_api()
click to toggle source
# File lib/apiable_model_errors.rb, line 29 def errors_for_api @errors_for_api ||= {} end
has_message?(attribute, message, options = nil)
click to toggle source
# File lib/apiable_model_errors.rb, line 52 def has_message?(attribute, message, options = nil) if errors = errors_for_api[attribute] if error = errors.select { |e| e[0] == message }.first if options.nil? true # No options specified, if it exists, it's here elsif options == error[1] true # The options match those on the subejct else false # The options selected don't match those on the error end else false # No errors of this type end else false # No errors for this attribute end end
to_api_hash()
click to toggle source
# File lib/apiable_model_errors.rb, line 11 def to_api_hash errors_for_api.each_with_object({}) do |(attribute, errors), hash| hash[attribute] = [] errors.each_with_index do |(message, options), index| if message.is_a?(String) error = {:message => message} else error = { :code => message, :message => messages[attribute][index], :options => options } end hash[attribute] << error end end end