On Aug 16, 2010, at 11:43 PM, Abbasi Ujjainwala wrote:
Hi,
Appreciating the active hobo community I am taking this courage.
I am trying out hobo on a part time project, so please bear with me
for such basic questions (kind of also shows my lack of rails
experience), here is my situation:
Let’s say I am extending Agility Tutorial to also keep track of time
spent by various users on a story.
So story has a field called total_time_to_burn
And I have a model called “time” with a field “time_burned”
Relation ship between Story, Time and User is as follows:
Story
has_many :times
Time
belongs_to :story
belongs_to :user
User
has_many :times
When user spends some time working on a story, she updates that
info, so user does following:
1. Goes to the story and enters time_burned and clicks add (I
have achieved this, similar to as suggested for adding task to the
story but I need to figure out how to default the user logged-in to
be automatically associated with the Time object created).
Adding :creator => true to the user field will make this happen.
2. Total_time_to_burn field of the story should be reduced
(deducted) by the amount of time_burned entered by the user for the
time model. (I need to know how to achieve it?)
You'd want to do the calculation in an after_save callback on the Time
model:
class Time < ActiveRecord::Base
...
after_save :adjust_time_to_burn
def adjust_time_to_burn
self.story.update_attribute(:total_time_to_burn,
story.total_time_to_burn - time_burned)
end
...
end
See http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html for
more details.
One note: 'Time' is a reserved constant in Ruby. Naming a model that
may cause deeply bizarre things to happen when Rails tries to do date/
time conversions.
--Matt Jones
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/hobousers?hl=en.