I have a child relationship that is denormalized. I want to normalize
it at the object level once it's retrieved:

class Parent
  has_many :denormalized_children,  :class_name=>'Child'

  def children
    if @normalized_children.nil?
       @normalized_children = []
       denormalized_children.group_by(&:number).each { |c|
            @normalized_children << NormalizedChild.new(c)
       }
    end
    @normalized_children
  end
end

This works fine, but I don't want to eager load them
as :denormalized_children. I'd like to use :children. So I tried:

class Parent
  has_many :children

  alias :denormalized_children :children
  def children
  #Same definition
  end
end


AR doesn't like this as it expects the children prop to return
something that responds to loaded.

has_many :children, :group=>'number'

doesnt work either since it discards all but  N unique numbers. So if
I have 10 with number 1 and 5 with number 2 I'll only get back 2
children.

Is there any way to do this without having to change the name of the
relationship?

I can't use after_load  (or whatever it's called) in the Child class
since the children need to be grouped by their relationship to their
parent.

Any suggestions would be great.

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

Reply via email to