Overriding a Relationships Propertry

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©

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

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

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

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

Any suggestions would be great.


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs