module MongoidEmbeddedErrorsMessages
Constants
- VERSION
Public Class Methods
included(klass)
click to toggle source
# File lib/mongoid-embedded-errors-messages.rb, line 4 def self.included(klass) raise NotMongoidDocument unless klass.included_modules.include? Mongoid::Document end
Public Instance Methods
embedded_errors_messages()
click to toggle source
# File lib/mongoid-embedded-errors-messages.rb, line 8 def embedded_errors_messages merged_errors = errors.messages embedded_relations.each do |relation, metadata| if metadata[:relation] == Mongoid::Relations::Embedded::Many errors = embedded_errors_for_embeds_many_relation(relation) merged_errors.merge!(errors) if errors.present? elsif metadata[:relation] == Mongoid::Relations::Embedded::One errors = embedded_errors_for_embeds_one_relation(relation) merged_errors.merge!(errors) if errors.present? end end merged_errors.present? ? merged_errors : nil end
Private Instance Methods
embedded_errors_for_embeds_many_relation(relation)
click to toggle source
# File lib/mongoid-embedded-errors-messages.rb, line 24 def embedded_errors_for_embeds_many_relation(relation) errors_array = send(relation).map{|doc| doc.try(:embedded_errors_messages)} if errors_array.compact.present? children_errors = {relation.to_sym => errors_array} children_errors.delete_if{|k,v| v.blank? } end children_errors end
embedded_errors_for_embeds_one_relation(relation)
click to toggle source
# File lib/mongoid-embedded-errors-messages.rb, line 33 def embedded_errors_for_embeds_one_relation(relation) relation_errors = send(relation).try(:embedded_errors_messages) { relation.to_sym => relation_errors } if relation_errors.present? end