Module: HasEmbeddedDocument::DSL
- Defined in:
- lib/has_embedded_document/dsl.rb
Instance Method Summary collapse
- #has_embedded_document(name, document_class, validate: true, optional: true) ⇒ void
- #has_many_embedded_documents(name, document_class, validate: true, optional: true) ⇒ void
- #resolve_document_class(document_class) ⇒ Class<HasEmbeddedDocument::Base>
- #validate_embedded_document(name, **options) ⇒ void
- #validate_many_embedded_documents(name, **options) ⇒ void
Instance Method Details
#has_embedded_document(name, document_class, validate: true, optional: true) ⇒ void
This method returns an undefined value.
10 11 12 13 14 15 16 |
# File 'lib/has_embedded_document/dsl.rb', line 10 def (name, document_class, validate: true, optional: true) # rubocop:disable Naming/PredicateName (name, document_class) (name, document_class) validates(name, presence: { message: :required }) unless optional (name, **(validate.is_a?(Hash) ? validate : {})) if validate end |
#has_many_embedded_documents(name, document_class, validate: true, optional: true) ⇒ void
This method returns an undefined value.
23 24 25 26 27 28 29 |
# File 'lib/has_embedded_document/dsl.rb', line 23 def (name, document_class, validate: true, optional: true) # rubocop:disable Naming/PredicateName (name, document_class) (name, document_class) validates(name, presence: { message: :required }) unless optional (name, **(validate.is_a?(Hash) ? validate : {})) if validate end |
#resolve_document_class(document_class) ⇒ Class<HasEmbeddedDocument::Base>
63 64 65 66 67 68 |
# File 'lib/has_embedded_document/dsl.rb', line 63 def resolve_document_class(document_class) document_class = document_class.constantize if document_class.is_a?(String) raise ArgumentError, "Unknown document class: #{document_class}" unless document_class < HasEmbeddedDocument::Base document_class end |
#validate_embedded_document(name, **options) ⇒ void
This method returns an undefined value.
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/has_embedded_document/dsl.rb', line 33 def (name, **) validate(**) do document = send(name) if document&.invalid? document.errors.each do |error| errors.add("#{name}.#{error.attribute}", error.) end end end end |
#validate_many_embedded_documents(name, **options) ⇒ void
This method returns an undefined value.
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/has_embedded_document/dsl.rb', line 47 def (name, **) validate(**) do documents = send(name) documents&.each_with_index do |document, index| next if document.valid? document.errors.each do |error| errors.add("#{name}[#{index}].#{error.attribute}", error.) end end end end |