Module: ErrorMerger
- Defined in:
- lib/error_merger/version.rb,
lib/error_merger/error_merger.rb
Constant Summary collapse
- VERSION =
'1.0.1'
Instance Method Summary collapse
- #full_sentence(attribute, message) ⇒ Object
- #full_sentences ⇒ Object
- #join_sentences ⇒ Object (also: #as_sentences)
-
#merge(assoc_or_errors, prefix = nil, attribute: :base) ⇒ Object
merges an association’s Errors set into the current set eg: @user.errors.merge @account @user.errors.merge @account, “Account ##@[email protected]:” @user.errors.merge @account, attribute: :account.
Instance Method Details
#full_sentence(attribute, message) ⇒ Object
43 44 45 46 |
# File 'lib/error_merger/error_merger.rb', line 43 def full_sentence(attribute, ) m = (attribute, ) m.end_with?('.') ? m : "#{m}." end |
#full_sentences ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/error_merger/error_merger.rb', line 32 def full_sentences if defined?(ActiveModel::Error) map do |error| m = error. m.end_with?('.') ? m : "#{m}." end else map{ |attr, m| full_sentence(attr, m) } end end |
#join_sentences ⇒ Object Also known as: as_sentences
48 49 50 |
# File 'lib/error_merger/error_merger.rb', line 48 def join_sentences full_sentences.join ' ' end |
#merge(assoc_or_errors, prefix = nil, attribute: :base) ⇒ Object
merges an association’s Errors set into the current set eg: @user.errors.merge @account
@user.errors.merge @account, "Account ##{@account.id}:"
@user.errors.merge @account, attribute: :account
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/error_merger/error_merger.rb', line 7 def merge(assoc_or_errors, prefix=nil, attribute: :base) if assoc_or_errors.respond_to?(:errors) && assoc_or_errors.errors.is_a?(ActiveModel::Errors) errors = assoc_or_errors.errors else errors = assoc_or_errors end if attribute == :base && prefix.nil? && errors.instance_variable_defined?(:@base) prefix = "#{errors.instance_variable_get(:@base).class.model_name.human}: " else prefix ||= nil end prefix = "#{prefix} " if prefix =~ /[a-z0-9]$/i if errors.respond_to? :full_messages errors = errors. elsif errors.is_a? Hash errors = errors.values.flatten end errors.each do |error| add attribute, "#{prefix}#{error}" end end |