Hello,
/* Insert usual disclaimer about being new to Rails and probably Ruby */
I have a form that updates a table of monitors, and, among other
fields, has monitor_start and monitor_end, both of which are
timestamps (using Postgres.)
On the form, I want the user to be able to, optionally, specify the
start of the monitoring, using the standard Rails date dropdowns,
and then a length for the monitoring: week, fortnight, month, 3
month, 6 months, year.  That works fine.
Upon submission, I need to fix the monitor_end value to be a timestamp
instead of the length.  My first try at it, I sent all the params
to a function which create a date from the monitor_start values then added
monitor_end to it and replaced monitor_end with the new timestamp.
This worked but made me feel dirty :)
So I decided to do this in the model with before_save as that felt
like the right way to handle it.  Now on to my problem, which is
likely something stupid.  I set a breakpoint in my called function,
set_monitor_end, so I could try out how create the timestamp.  My
original function used the values from param: monitor_start(1i),
monitor_start(2i), monitor_start(3i) to create a new date and then
added the value from monitor_end to it.  I don''t have those values
in the model, so I tried parsing monitor_start using Date.  This
gets me an error about a private method, though:
irb(#<User_monitor:0x8c7802c>):026:0* self
=> #<User_monitor:0x8c7802c
@__bp_file="./script/../config/../app/models/user_monitor.rb",
@attributes={"updated_at"=>nil,
"interface_id"=>"247",
"type"=>"User_monitor",
"monitor_end"=>"14", "monitor_start"=>Tue
Oct 25 00:00:00 EDT 2005, "user_id"=>"1"}, @__bp_line=5,
@new_record=true, @errors=#<ActiveRecord::Errors:0x8c62808
@base=#<User_monitor:0x8c7802c ...>, @errors={}>>
irb(#<User_monitor:0x8c7802c>):027:0> Date.strptime(self.monitor_start)
NoMethodError: private method `sub!'' called for Tue Oct 25 00:00:00 EDT
2005:Time
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:168:in `__strptime''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:54:in `scan''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:54:in `__strptime''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:83:in `__strptime''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:54:in `scan''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:54:in `__strptime''
        from (druby://localhost:42531)
/usr/local/lib/ruby/1.8/date/format.rb:229:in `_strptime''
        from (druby://localhost:42531) /usr/local/lib/ruby/1.8/date.rb:674:in
`strptime''
        from (druby://localhost:42531) (irb):27:in `breakpoint''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:333:in
`breakpoint''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:333:in
`breakpoint''
        from (druby://localhost:42531)
./script/../config/../app/models/user_monitor.rb:5:in `set_monitor_end''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:333:in
`send''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:333:in
`callback''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:330:in
`each''
        from (druby://localhost:42531)
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record/callbacks.rb:330:in
`callback''
... 54 levels...
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1508:in `main_loop''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1504:in `start''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1504:in `main_loop''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1371:in `run''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1368:in `start''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1368:in `run''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1293:in `initialize''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1549:in `new''
        from /usr/local/lib/ruby/1.8/drb/drb.rb:1549:in `start_service''
        from
/usr/local/lib/ruby/gems/1.8/gems/rails-0.13.1/lib/breakpoint_client.rb:146
        from
/usr/local/lib/ruby/gems/1.8/gems/rails-0.13.1/lib/breakpoint_client.rb:145:in
`loop''
        from
/usr/local/lib/ruby/gems/1.8/gems/rails-0.13.1/lib/breakpoint_client.rb:145
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in
`require__''
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in
`require''
        from
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/dependencies.rb:200:in
`require''
        from script/breakpointer:4irb(#<User_monitor:0x8c7802c>):028:0>
Like I said, it''s probably stupidity on my part, but how should I
go about doing this?
Thanks,
Denny Reiter
-- 
Denny Reiter                                 
denny-wJvvXGulOwdAfugRpC6u6w@public.gmane.org
            Secret hacker rule #11: hackers read manuals.