Module: Reins::Model::Persistence

Included in:
Base
Defined in:
lib/reins/model/persistence.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
# File 'lib/reins/model/persistence.rb', line 4

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#destroyObject



64
65
66
67
68
69
70
71
# File 'lib/reins/model/persistence.rb', line 64

def destroy
  run_callbacks(:before_destroy) if respond_to?(:run_callbacks)
  sql = "DELETE FROM #{self.class.table_name} WHERE #{self.class.primary_key} = ?"
  Reins::Database.connection.execute(sql, [id])
  @persisted = false
  run_callbacks(:after_destroy) if respond_to?(:run_callbacks)
  self
end

#new_record?Boolean

Returns:

  • (Boolean)


81
# File 'lib/reins/model/persistence.rb', line 81

def new_record? = !persisted?

#persisted?Boolean

Returns:

  • (Boolean)


80
# File 'lib/reins/model/persistence.rb', line 80

def persisted? = @persisted == true

#reloadObject



73
74
75
76
77
78
# File 'lib/reins/model/persistence.rb', line 73

def reload
  record = self.class.find(id)
  @attributes = record.send(:attributes_hash).dup
  @associations = nil
  self
end

#saveObject



43
44
45
46
47
48
# File 'lib/reins/model/persistence.rb', line 43

def save
  return false if respond_to?(:valid?) && !valid?

  run_save_callbacks { persisted? ? update_record : insert_record }
  true
end

#save!Object



50
51
52
# File 'lib/reins/model/persistence.rb', line 50

def save!
  save || raise(Reins::Model::RecordInvalid, self)
end

#update(attrs) ⇒ Object



54
55
56
57
# File 'lib/reins/model/persistence.rb', line 54

def update(attrs)
  attrs.each { |k, v| @attributes[k.to_s] = v }
  save
end

#update!(attrs) ⇒ Object



59
60
61
62
# File 'lib/reins/model/persistence.rb', line 59

def update!(attrs)
  attrs.each { |k, v| @attributes[k.to_s] = v }
  save!
end