Sha256: c3d3d4b88920954cfd5f8b7506af2513d8a848f0c503860304931cab3bb925b9

Contents?: true

Size: 702 Bytes

Versions: 4

Compression:

Stored size: 702 Bytes

Contents

module Cistern::Singular
  include Cistern::Model

  def self.cistern_singular(cistern, klass, name)
    cistern.const_get(:Collections).module_eval <<-EOS, __FILE__, __LINE__
      def #{name}(attributes={})
        #{klass.name}.new(attributes.merge(cistern: self))
      end
    EOS
  end

  def self.included(klass)
    super

    klass.send(:extend, Cistern::Attributes::ClassMethods)
    klass.send(:include, Cistern::Attributes::InstanceMethods)
    klass.send(:extend, Cistern::Model::ClassMethods)
    klass.send(:extend, Cistern::Associations)
  end

  def collection
    self
  end

  def get
    raise NotImplementedError
  end

  def reload
    get
    self
  end

  alias load reload
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cistern-2.8.0 lib/cistern/singular.rb
cistern-2.7.2 lib/cistern/singular.rb
cistern-2.7.1 lib/cistern/singular.rb
cistern-2.7.0 lib/cistern/singular.rb