Thank you so much for your insights! I checked out delegate and that
really helped to simplify things (especially because I have multiple
related classes with the same name attributes).
In the end, what solved my naming problem was using the following:
<%= link_to "#{course.order_taught} #{course.type_name} #
{course.name}", {:action => 'show', :id => course } %>
I had to take some time to go back and review some of the basics of
Ruby, and in the end, the solution was really simple.
Thanks again for your help!!
On Nov 18, 7:16 am, Frederick Cheung <[email protected]>
wrote:
> On Nov 18, 2:07 pm, Demetrius <[email protected]> wrote:
>
> > Hello! I'm looking for assistance EXTENDING an example from the Agile
> > Web Development With Rails book:ComposingDatawith Aggregation (page
> > 324).
>
> > I'm trying to mapthreecolumns to a single Ruby object. However,
> > unlike the example in the Agile Web Development book, thethree
> > columns I want to map into one object come fromTHREEDIFFERENT
> >models.
>
> Composed_of is not normally used (or probably designed to be used) in
> this way). The basic idea is that you have some raw attributes and you
> turn them into a object, for example you might have attributes on your
> model called start and finish and use composed_of to create a magic
> attribute called Range whose endpoints are those attributes.
>
> If you want your standard object to have the name from the Grade
> object, could you just do
>
> def grade_abbr
> grade.grade_abbr
> end
>
> (and when you're happy with this, have a look at delegate)
>
> Fred
>
> > I want to map the followingthreecolumns into one object:
> > grade.grade_abbr, strand.strand_abbr, standard.number (ex. 5 NS 2.3).
> > Also, I only need to read the new object--not edit the original
> > columns.
>
> > Here are themodelsand their relationships:
>
> > class Standard
> > belongs_to :strand
> > belongs_to :grade
>
> > class Strand
> > has_many :standards
>
> > class Grade
> > has_many :standards
>
> > When I originally setup my Standard table with grade_abbr and
> > strand_abbr, it easy to follow the example in the Agile Web
> > Development because each column was contained within the Standard
> > model. However, I had to move Grade and Strand into their own tables,
> > so the Standard table contains grade_id and strand_id--not the actual
> > objects themselves.
>
> > When I played with the example from the Agile Web Development book, I
> > couldn't get :grade.grade_abbr and strand.strand_abbr to work. The
> > code below was the best that I could come up with but it shows
> > grade_id and strand_id. Does anyone have a suggestion for how to make
> > this work or for a new strategy?
>
> > class Standard < ActiveRecord::Base
> > composed_of :full_standard,
> > :mapping =>
> > [
> > %w[grade_id grade_id],
> > %w[strand_id strand_id]
> > %w[number number]
> > ]
>
> > class FullStandard < ActiveRecord::Base
> > attr_reader :grade_id, :strand_id, :number
>
> > def initialize(grade_id, strand, number)
> > @grade_id = grade_id
> > @strand_id = strand_id
> > @number = number
> > end
>
> > def to_s
> > [ @grade_id, @strand_id, @number ].compact.join(" ")
> > end
> > end
--
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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.