Sha256: 492a6f36a1e67bab03871085acbfdd07041b036e0de6403f864e7faae5ba8045
Contents?: true
Size: 1005 Bytes
Versions: 3
Compression:
Stored size: 1005 Bytes
Contents
require 'pina/models/uploaded_document' require 'active_support/inflector' require 'active_support/core_ext/hash/keys' module Pina module Models class DocumentPairing include Virtus.model attribute :uploaded_document, ::Pina::Models::UploadedDocument attribute :document_pairable_type attribute :document_pairable_id attribute :created_at, DateTime def initialize(attributes = {}, *args) extend(Virtus.model) document_type = attributes.symbolize_keys[:document_pairable_type] document_pairable_attribute(document_type) super end private def document_pairable_attribute(document_type) return unless document_type attribute(:document_pairable, document_klass(document_type)) end def document_klass(document_type) model = document_type.camelize return unless Pina::Models.const_defined?(model) Pina::Models.const_get(model) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pina-0.15.0 | lib/pina/models/document_pairing.rb |
pina-0.14.4 | lib/pina/models/document_pairing.rb |
pina-0.14.3 | lib/pina/models/document_pairing.rb |