Refactoring commonly used aggregations

I have a number of models that use an aggregation to combine First Name,
Middle Initial and Last Name and they have been working fine. I am
looking to clean this up, DRY it if possible.

I have things like this in application.rb
class Clwholename
attr_reader :first_name, :middle_initial, :last_name
def initialize(first_name, middle_initial, last_name)
@first_name = first_name
@middle_initial = middle_initial
@last_name = last_name
end
def to_s
[ @first_name, @middle_initial, @last_name ].compact.join(" ")
end
end

and then in whichever model I need to use this, I have…
composed_of :clwholename,
:class_name => Clwholename,
:mapping =>
[[ :first_name, :first_name ],
[ :middle_initial, :middle_initial ],
[ :last_name, :last_name ]
]

which is repeated in a number of models. I ran into a snag when trying
to use RAV (which is very cool but gags on my Clwholename class if I
include models) and the suggestion was to put the stuff in
lib/clwholename.rb and ‘require’ it in my model.

I seem to be working fine by putting the class definition for
Clwholename in lib/clwholename.rb and requiring it in my model but the
section of “composed of :clwholename” simply doesn’t work if I put it
into helpers (I assume because that is for views and not controllers) or
in the lib/clwholename (unknown method composed_of) and I am not getting
any DRYer.

What’s the best way to handle this?

Craig

If it’s universal controller logic, put it in application_controller.rb.

        - dan


Dan K. mailto:[email protected]
http://www.dankohn.com/ tel:+1-415-233-1000

I would set up an acts_as_name for the model part of it.

Craig W. wrote:

I have a number of models that use an aggregation to combine First Name,
Middle Initial and Last Name and they have been working fine. I am
looking to clean this up, DRY it if possible.

On Sun, 2006-07-23 at 01:28 +0200, Yehuda K. wrote:

I would set up an acts_as_name for the model part of it.

Craig W. wrote:

I have a number of models that use an aggregation to combine First Name,
Middle Initial and Last Name and they have been working fine. I am
looking to clean this up, DRY it if possible.


that makes sense but I wouldn’t know where to start. This sounds like a
module. Any point to something I could read that would give me an idea
on how to accomplish this?

Craig

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