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