module ActiveModel::Embedding::Associations::ClassMethods

Public Instance Methods

embedded_associations() click to toggle source
# File lib/active_model/embedding/associations.rb, line 60
def embedded_associations
  class_variable_get :@@embedded_associations
end
embeds_many(attr_name, class_name: nil, cast_type: nil, collection: nil) click to toggle source
# File lib/active_model/embedding/associations.rb, line 33
def embeds_many(attr_name, class_name: nil, cast_type: nil, collection: nil)
  class_name = cast_type ? nil : class_name || infer_class_name_from(attr_name)

  attribute :"#{attr_name}", :document,
    class_name: class_name,
    cast_type: cast_type,
    collection: collection || true,
    context: self.to_s

  register_embedded_association attr_name

  nested_attributes_for attr_name
end
embeds_one(attr_name, class_name: nil, cast_type: nil) click to toggle source
# File lib/active_model/embedding/associations.rb, line 47
def embeds_one(attr_name, class_name: nil, cast_type: nil)
  class_name = cast_type ? nil : class_name || infer_class_name_from(attr_name)

  attribute :"#{attr_name}", :document,
    class_name: class_name,
    cast_type: cast_type,
    context: self.to_s

  register_embedded_association attr_name

  nested_attributes_for attr_name
end

Private Instance Methods

infer_class_name_from(attr_name) click to toggle source
# File lib/active_model/embedding/associations.rb, line 66
def infer_class_name_from(attr_name)
  attr_name.to_s.singularize.camelize
end
nested_attributes_for(attr_name) click to toggle source
# File lib/active_model/embedding/associations.rb, line 74
def nested_attributes_for(attr_name)
  delegate :attributes=, to: :"#{attr_name}", prefix: true
end
register_embedded_association(name) click to toggle source
# File lib/active_model/embedding/associations.rb, line 70
def register_embedded_association(name)
  embedded_associations << name
end