Ruby on Rails Friday, November 26, 2010

Hello,

I have custom queries that joins several tables, so I have written a
model class to represent those data. I have extended it from
ActiveRecord::Base in order to be able to use 'find_by_sql'. When I
call 'find_by_sql' it seems to work fine, in the debugger I can see
every record retrieved from DB with their values, but when I try to
access those values through some accessors, they don't give me
anything.

This is my class:

class ProjectsReport < ActiveRecord::Base

attr_accessor :total_hours, :group_name, :project_type, :request_type

def initialize(total_hours, group_name, project_type, request_type)
@total_hours = total_hours
@group_name = group_name
@project_type = project_type
@request_type = request_type
end
end

If I use another class that has a table associated to call
find_by_sql, everything works fine, but that isn't a good design.

# This doesn't work because ProjectsReport doesn't have any table on
DB?
@records =
ProjectsReport.find_by_sql(create_projects_report_query(start_date,
end_date))

# This works but TimeEntry doesn't have anything related with
information retrieved by the query
@records =
TimeEntry.find_by_sql(create_projects_report_query(start_date,
end_date))

What must I add to ProjectsReport to get it working?

--
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