class LarisrecordBase
Public Class Methods
columns()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 2 def self.columns return @columns if @columns @columns = DBConnection.columns(table_name) end
destroy(row)
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 12 def self.destroy(row) row = find(row) if row.is_a?(Integer) row.destroy end
destroy_all()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 8 def self.destroy_all all.each { |row| row.destroy } end
laris_finalize!()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 17 def self.laris_finalize! columns.each do |attr_name| define_method(attr_name) do attributes[attr_name] end define_method("#{attr_name}=") do |value| attributes[attr_name] = value end end end
new(params = {})
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 37 def initialize(params = {}) params.each do |attr_name, value| if self.class.columns.include?(attr_name.to_sym) send("#{attr_name}=", value) else raise "unknown attribute '#{attr_name}'" end end end
table_name()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 33 def self.table_name @table_name ||= self.to_s.tableize end
table_name=(table_name)
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 29 def self.table_name=(table_name) @table_name = table_name end
Public Instance Methods
attribute_values()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 51 def attribute_values columns.map { |attr_name| send(attr_name) } end
attributes()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 47 def attributes @attributes ||= {} end
destroy()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 55 def destroy DBConnection.execute(<<-SQL, [id]) DELETE FROM #{table_name} WHERE #{table_name}.id = ? SQL self end
insert()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 66 def insert cols = columns.reject { |col| col == :id } col_values = cols.map { |attr_name| send(attr_name) } col_names = cols.join(", ") question_marks = (["?"] * cols.size).join(", ") result = DBConnection.execute(<<-SQL, col_values) INSERT INTO #{table_name} (#{col_names}) VALUES (#{question_marks}) RETURNING id SQL self.id = result.first['id'] # DBConnection.last_insert_row_id true end
save()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 86 def save id ? update : insert end
update()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 90 def update set_sql = columns.map { |attr_name| "#{attr_name} = ?" }.join(", ") result = DBConnection.execute(<<-SQL, attribute_values << id) UPDATE #{table_name} SET #{set_sql} WHERE #{table_name}.id = ? SQL true end
Private Instance Methods
columns()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 106 def columns self.class.columns end
table_name()
click to toggle source
# File lib/laris/larisrecord/larisrecord_base.rb, line 110 def table_name self.class.table_name end