A
Adam Akhtar
Hi Ive been using KirbyBase and got it up and working and been fine with
basic stuff such as inserting and selecting. I create my own record
class as well to retrieve and pass data to the table.
The problem is with using default values. I cant seem to get the db to
substitiute any blank (nil) values in my custom record class with the
default values I specified when creating the table. When i check the
table in a text editor after an insert the values are kb_nil - hence its
not substituting like it should during the insert operation. Hence when
I do a select on the table in question i get nil values back rather than
the default values.
I experimented in irb and when i dont create a custom record class it
seems to work but i cant find anything in the docs that suggest i should
be doing anything different if i use my own custom record class.
heres is some code for you to use in irb which makes use of a custom
record class called task (im making a todo list) which replicates the
problem
require 'kirbybase'
class Task
attr_accessorrecno, :title)
def Task.kb_create(recno, title)
Task.new do |x|
x.recno = recno
x.title = title
end
end
def initialize(&block)
instance_eval(&block)
end
end
db = KirbyBase.new
tbl = db.create_tabledeleteme, :title, {ataType=>:String,
efault=>'No Title'}) do |t|
t.record_class = Task
end
a_task = Task.new {|r| r.title = nil}
tbl.insert(a_task)
tbl.select
============================================
the result of the above select
---------------------------------------------
irb(main):029:0> tbl.select
=> [#<Task:0x4ec71e8 @title=nil, @recno=1>]
title should not be nil. It should be "No Title".
finally
here is the table file after insert
000001|000000|Task|recno:Integer|title:Stringefault->No Title
1|kb_nil
can anyone tell me where im going wrong on this????
basic stuff such as inserting and selecting. I create my own record
class as well to retrieve and pass data to the table.
The problem is with using default values. I cant seem to get the db to
substitiute any blank (nil) values in my custom record class with the
default values I specified when creating the table. When i check the
table in a text editor after an insert the values are kb_nil - hence its
not substituting like it should during the insert operation. Hence when
I do a select on the table in question i get nil values back rather than
the default values.
I experimented in irb and when i dont create a custom record class it
seems to work but i cant find anything in the docs that suggest i should
be doing anything different if i use my own custom record class.
heres is some code for you to use in irb which makes use of a custom
record class called task (im making a todo list) which replicates the
problem
require 'kirbybase'
class Task
attr_accessorrecno, :title)
def Task.kb_create(recno, title)
Task.new do |x|
x.recno = recno
x.title = title
end
end
def initialize(&block)
instance_eval(&block)
end
end
db = KirbyBase.new
tbl = db.create_tabledeleteme, :title, {ataType=>:String,
efault=>'No Title'}) do |t|
t.record_class = Task
end
a_task = Task.new {|r| r.title = nil}
tbl.insert(a_task)
tbl.select
============================================
the result of the above select
---------------------------------------------
irb(main):029:0> tbl.select
=> [#<Task:0x4ec71e8 @title=nil, @recno=1>]
title should not be nil. It should be "No Title".
finally
here is the table file after insert
000001|000000|Task|recno:Integer|title:Stringefault->No Title
1|kb_nil
can anyone tell me where im going wrong on this????