Ruby on Rails Wednesday, September 1, 2010

Hi all -

Ruby 1.8.7 / Rails 2.3.5

Schedule model: course_id, starts_at, ends_at, capacity
has_many :requests

Request model: user_id, schedule_id, state_id
belongs_to :schedule

request.state_id indicates whether the request has been approved.
(state_id = 2 = pending my approval, state_id = 3 = approved)

I want to list all requests pending my approval, along with the
remaining seats available.

def listPendingRequest
@allRequests = Request.find(:all, :conditions => ["state_id = ?",
2]).each{
|request|
@schedule = Schedule.find(:first, :conditions => ["id =
?",request.schedule_id])
@num = Request.find(:all, :conditions => ["state_id = ? AND schedule_id
= ?", '3', @schedule.id]).nitems
@remaining = @schedule.capacity - @num
}
@request = Array.new
@allRequests.each do |r|
if (r.state_id == 2 and r.approver_id == current_user.id)
@request << r
end
end
if @request.empty?
flash.now[:alert] = "You have no pending requests to approve."
end
end


I currently have this method in my request controller, but I think it
belongs in a model. I don't know which model, though.

Also, this method shows the remaining seats for the first schedule on
all of the requests, regardless of which schedule is being requested.
When I do a @schedule = Schedule.find(:all...), I get an error:
"undefined method 'capacity' for Array".

What am I doing wrong? And where should I put the method?

Thanks in advance for your help!!
--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment