class EmbeddedModel::Embedder
Public Class Methods
new(container, column, options = {})
click to toggle source
# File lib/embedded_model/embedder.rb, line 3 def initialize(container, column, options = {}) @container = container @column = column @class_name = options[:class_name] end
Public Instance Methods
embed_collection()
click to toggle source
# File lib/embedded_model/embedder.rb, line 13 def embed_collection embed collection_builder, default: [] end
embed_object()
click to toggle source
# File lib/embedded_model/embedder.rb, line 9 def embed_object embed object_builder end
Private Instance Methods
collection_builder()
click to toggle source
# File lib/embedded_model/embedder.rb, line 42 def collection_builder ->(arr) { arr.try(:map, &object_builder) } end
embed(builder, options = {})
click to toggle source
# File lib/embedded_model/embedder.rb, line 19 def embed(builder, options = {}) @container.attribute(@column, EmbeddedModel::Type.new(&builder), options) end
model()
click to toggle source
# File lib/embedded_model/embedder.rb, line 23 def model @model ||= begin return @class_name if @class_name.is_a?(Class) (@class_name || @column).to_s.classify.constantize end end
object_builder()
click to toggle source
# File lib/embedded_model/embedder.rb, line 31 def object_builder ->(object_or_attributes) do if object_or_attributes.is_a?(model) object_or_attributes else attributes = object_or_attributes.try(:to_hash) model.new(attributes) if attributes end end end