module Persistable::InstanceMethods
Instance methods for ORM persistence
Public Class Methods
included(base)
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 76 def self.included(base) # Hook puts "#{base} has mixed in #{self}" end
new(options = {})
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 80 def initialize(options = {}) options.each do |key, value| self.send("#{key}=", value) end end
Public Instance Methods
attribute_values()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 86 def attribute_values self.class.attributes.keys[1..-1].collect do |attr_name| self.send(attr_name) end end
destroy()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 105 def destroy sql = <<-SQL DELETE FROM #{self.class.table_name} WHERE id = ? SQL DB[:conn].execute(sql, self.id) end
insert()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 96 def insert sql = <<-SQL INSERT INTO #{self.class.table_name} (#{self.class.attribute_names_for_insert}) VALUES (#{self.class.question_marks_for_insert}) SQL DB[:conn].execute(sql, *attribute_values) self.id = DB[:conn].execute('SELECT last_insert_rowid();')[0][0] end
persisted?()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 92 def persisted? !!self.id end
save()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 122 def save persisted? ? update : insert end
update()
click to toggle source
# File lib/soil_sample_orm/concerns/persistable.rb, line 113 def update sql = <<-SQL UPDATE #{self.class.table_name} SET #{self.class.sql_for_update} WHERE id = ? SQL DB[:conn].execute(sql, *attribute_values, self.id) end