Dynamic associations

Hi,
This is my first post to this forum, glad to meet you all!

I have a question about dynamic associations.

Say I have an application that creates tables after installation (via a
user action). Say an extra table gets created that details a shop’s
coffee purchases.

I’ve seen somewhere on the net you can just eval the code to create our
CoffeePurchases class but how do we dynamically add a “has_many”
declaration to the Shop class?

On 4 Aug 2008, at 00:53, Don Buchanan wrote:

I’ve seen somewhere on the net you can just eval the code to create
our
CoffeePurchases class but how do we dynamically add a “has_many”
declaration to the Shop class?

has_many is just a method call, so (in theory) at any time you want
you can call Shop.has_many :foos… (if has_many is a protected method
just use send).
Not sure this is a great idea though, as there are several
complications:

  • if your app is restarted you’ll have to repeat all this
  • unless you want really weird behaviour you’ll have to run your class
    generating, method adding code on all of your mongrels/mod_rails
    instances etc…

Fred

Frederick C. wrote:

  • if your app is restarted you’ll have to repeat all this
  • unless you want really weird behaviour you’ll have to run your class
    generating, method adding code on all of your mongrels/mod_rails
    instances etc…

Fred

Thanks!

Yeah, I know its a fairly wacky idea, i’m just looking at all the
options. On this note, I haven’t figured out a way to traverse the
object tree. I would like to take an object instance, find its
associations and list them (possibly crawling through the child objects
as well). I know there must be a way to do it but I just can’t find it
:frowning:

On 4 Aug 2008, at 01:11, aa aa wrote:

Thanks!

Yeah, I know its a fairly wacky idea, i’m just looking at all the
options. On this note, I haven’t figured out a way to traverse the
object tree. I would like to take an object instance, find its
associations and list them (possibly crawling through the child
objects
as well). I know there must be a way to do it but I just can’t find it

some_object.class.reflections (a hash, the keys are the association
names, the value is a object describing the association).
reflections also includes aggregations (composed_of), but you can
filter those out by ignoring anything that isn’t a
ActiveRecord::Reflection::AssociationReflection

Fred

Frederick C. wrote:

On 4 Aug 2008, at 01:11, aa aa wrote:

Thanks!

Yeah, I know its a fairly wacky idea, i’m just looking at all the
options. On this note, I haven’t figured out a way to traverse the
object tree. I would like to take an object instance, find its
associations and list them (possibly crawling through the child
objects
as well). I know there must be a way to do it but I just can’t find it

some_object.class.reflections (a hash, the keys are the association
names, the value is a object describing the association).
reflections also includes aggregations (composed_of), but you can
filter those out by ignoring anything that isn’t a
ActiveRecord::Reflection::AssociationReflection

Fred

Depending on your needs, you might also want to look at
object.class.reflect_on_all_associations. You can pass to that method
:belongs_to if you are only interested in the “parent” hierarchy. I just
used that method and some recursion to traverse up and out along the
belongs_to paths. At some point in the (hopefully) near future, I’m
going to post the code with an explanation.

Phillip

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