module Her::Model::NestedAttributes::ClassMethods

Public Instance Methods

accepts_nested_attributes_for(*associations) click to toggle source

Allow nested attributes for an association

@example

class User
  include Her::Model

  has_one :role
  accepts_nested_attributes_for :role
end

class Role
  include Her::Model
end

user = User.new(name: "Tobias", role_attributes: { title: "moderator" })
user.role # => #<Role title="moderator">
# File lib/her/model/nested_attributes.rb, line 48
        def accepts_nested_attributes_for(*associations)
          allowed_association_names = association_names

          associations.each do |association_name|
            unless allowed_association_names.include?(association_name)
              raise Her::Errors::AssociationUnknownError.new("Unknown association name :#{association_name} in accepts_nested_attributes_for")
            end

            class_eval <<-RUBY, __FILE__, __LINE__ + 1
              if method_defined?(:#{association_name}_attributes=)
                remove_method(:#{association_name}_attributes=)
              end

              def #{association_name}_attributes=(attributes)
                self.#{association_name}.assign_nested_attributes(attributes)
              end
            RUBY
          end
        end
saved_nested_associations() click to toggle source
# File lib/her/model/nested_attributes.rb, line 68
def saved_nested_associations
  @_her_saved_associations ||= []
end
sends_nested_attributes_for(*associations) click to toggle source
# File lib/her/model/nested_attributes.rb, line 72
def sends_nested_attributes_for(*associations)
  allowed_association_names = association_names
  associations.each do |association_name|
    unless allowed_association_names.include?(association_name)
      raise Her::Errors::AssociationUnknownError.new("Unknown association name :#{association_name} in sends_nested_attributes_for")
    end
    saved_nested_associations.push association_name
  end
end