KirbyBase : update method problem

A

Adam Akhtar

the basic code below makes kirby complain that im trying to update a
link_to many field in my table when as can be seen I am not. Here is
some code for you to copy into irb to reproduce the error (though the
problem lies with only the pt table i have also included the code to
create the table its linked to called tt). I have read the manual many
times to no avail. I also looked through kirbys code but im a beginner
and i got lost in it ;)
---------------------------------------------

require 'kirbybase'

db = KirbyBase.new

db.drop_table:)pt) if db.table_exists?:)pt)
db.drop_table:)tt) if db.table_exists?:)tt)

tt = db.create_table:)tt, :task_title, {:DataType=>:String,
:Default=>'No Title'}, :completed, {:DataType=>:Boolean,
:Default=>true}, :project, {:DataType=>:String,
:Default=>'None'},:p_project_id, :Integer)

pt = db.create_table:)pt, :project_title, {:DataType=>:String,
:Default=>'No Project Name'}, :p_project_id, {:DataType=>:Integer,
:Default=>0}, :p_tasks,{:DataType=>:ResultSet,
:Link_many=>[:p_project_id, :task_table, :p_project_id]})

pt.insert:)project_title => "old") #creates record with recno = 1
pt.update:)project_title => "new") {|r| r.recno == 1}

------------------------

here is my error - p_tasks is the linked item in the other table tt.

ArgumentError: You cannot input a value for this field: p_tasks
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:3079:
in `check_against_input_for_specials'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:3078:
in `each'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:3078:
in `check_against_input_for_specials'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:2283:
in `set'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:2256:
in `each'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:2256:
in `set'
from
c:/ruby/lib/ruby/gems/1.8/gems/KirbyBase-2.6/lib/kirbybase.rb:2220:
in `update'
from (irb):72
from :0

-------------------------

in case your wondering, tt is a tasks table and pt is a projects table.
This is for a simple todo list app. Projects are comprised of tasks
hence the link.

Can anyone help?
 
S

Shawn Anderson

[Note: parts of this message were removed to make it a legal post.]

This should work:
pt.update:)project_title => "new",:p_tasks=>nil) {|r| r.recno == 1}

not sure if that's what you were shooting for, and I'm not sure why that
doesn't work the way you were doing it.
I'll try to look at it some more today.

/Shawn
 
A

Adam Akhtar

hey shawn, thanks for that, it does work with the short snippet above,
ive yet to try it with my project though. Im wondering if this is whats
intended by the author and its simply not been updated in the docs or if
its a coding error.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top