Sha256: 4c09dce83e637911b5eae51de657cf8f59d3b1b61ad5b2e1828cd318abd1a486

Contents?: true

Size: 983 Bytes

Versions: 70

Compression:

Stored size: 983 Bytes

Contents

module CassandraObject
  module BelongsTo
    class Builder
      def self.build(model, name, options)
        new(model, name, options).build
      end

      attr_reader :model, :name, :options
      def initialize(model, name, options)
        @model, @name, @options = model, name, options
      end

      def build
        define_writer
        define_reader

        reflection = CassandraObject::BelongsTo::Reflection.new(model, name, options)
        model.belongs_to_reflections = model.belongs_to_reflections.merge(name => reflection)
      end

      def mixin
        model.generated_belongs_to_methods
      end

      def define_writer
        name = self.name
        mixin.redefine_method("#{name}=") do |records|
          belongs_to_association(name).writer(records)
        end
      end

      def define_reader
        name = self.name
        mixin.redefine_method(name) do
          belongs_to_association(name).reader
        end
      end
    end
  end
end

Version data entries

70 entries across 70 versions & 3 rubygems

Version Path
extendi-cassandra_object-1.1.1 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.1.0 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.20 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.19 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.18 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.17 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.16 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.15 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.14 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.13 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.12 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.11 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.10 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.9 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.8 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.7 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.6 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.5 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.4 lib/cassandra_object/belongs_to/builder.rb
extendi-cassandra_object-1.0.1 lib/cassandra_object/belongs_to/builder.rb