class RBase::Record

Class that contains data for particular table row. Should not be created explicitly (use RBase::Table#create to create records)

Accessing attributes

You can read and assign values to row's columns using simple property syntax:

user = users_table[0]
user.name = 'Bob'
user.birth_date = Date.new(1980, 2, 29)
user.save

puts user.name
puts user.birth_date

Attributes

index[R]
table[R]

Public Class Methods

new(table, attributes = {}) click to toggle source
# File lib/rbase/record.rb, line 41
def initialize(table, attributes = {})
  @table = table
  @values_cached = {}
  @values_changed = {}

  attributes.each { |k, v| @values_changed[k.to_s.upcase] = v }
end

Public Instance Methods

clone() click to toggle source

Clone record.

# File lib/rbase/record.rb, line 82
def clone
  c = self.class.new(@table, @values_changed)
  c.instance_variable_set("@values_cached", @values_cached)
  c.instance_variable_set("@data", @data)
  c
end
delete() click to toggle source

Delete record from database.

# File lib/rbase/record.rb, line 71
def delete
  @deleted = true
  save
end
deleted?() click to toggle source

Returns true if record was marked as deleted; otherwise return false.

# File lib/rbase/record.rb, line 77
def deleted?
  @deleted ||= new_record? ? false : @data[0, 1] == '*'
end
method_missing(sym, *args) click to toggle source
# File lib/rbase/record.rb, line 89
def method_missing(sym, *args)
  name = sym.to_s
  if /=$/ =~ name && args.size == 1
    set_value(name[0..-2], args.first)
  else
    get_value(name)
  end
new_record?() click to toggle source

Returns true if record was never saved to database; otherwise return false.

# File lib/rbase/record.rb, line 60
def new_record?
  @data.nil?
end
save() click to toggle source

Save record to database.

# File lib/rbase/record.rb, line 65
def save
  record = self
  @table.instance_eval { save(record) }
end

Private Instance Methods

load(index, data) click to toggle source
# File lib/rbase/record.rb, line 51
def load(index, data)
  @table = table
  @index = index
  @data = data.dup
end