Sha256: 0aa2c469da056bfa0a527b97b089d43efbf27d14ebc217ac54d85612f7954fa9

Contents?: true

Size: 827 Bytes

Versions: 2

Compression:

Stored size: 827 Bytes

Contents

module Cql::Model::PersistenceMethods
  extend ::ActiveSupport::Concern

  def save
    updates = []

    self.class.columns.each do |key, config|
      value = instance_variable_get("@#{config[:attribute_name].to_s}".to_sym)
      value = "'#{value}'" unless value.is_a?(Fixnum)
      updates << "#{key.to_s} = #{value}" unless value.nil?
    end

    updates = updates.join(', ')

    query = "UPDATE #{table_name} SET #{updates} WHERE #{primary_key} = #{quoted_primary_value}"
    Cql::Base.connection.execute(query)

    @persisted = true
    self
  end

  def deleted?
    @deleted
  end

  def delete
    query = "DELETE FROM #{table_name} WHERE #{primary_key} = #{quoted_primary_value}"
    Cql::Base.connection.execute(query)

    @deleted = true
    @persisted = false
    self
  end

  module ClassMethods

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cql_model-0.0.5 lib/cql/model/persistence_methods.rb
cql_model-0.0.4 lib/cql/model/persistence_methods.rb