Single table inheritance and sub classes in subdirectories

Hi everyone,

I’m trying to organize my sources, according to the new 1.2
specifications.

So, i’ve an Animal class, with some subclasses (Dog,Bird,Snake).

Animal is in /model, the others in /models/animals.

When i’ve to instantiate a Dog, doing something like Animals::Dog.new
i’ve an exception:

The single-table inheritance mechanism failed to locate the
subclass: ‘Dog’. This error is raised because the column ‘type’ is
reserved for storing the class in case of inheritance. (cut)

This occurs why Rails is going to write just “Dog” in the type
column, and not “Animals::Dog”, so in the next call to the object the
operation fails.

I’m doing something messy or it’s just an issue?

Thanks,
alessio.

I looked in trac to see if there was a ticket for this and I couldn’t
find one, although that doesn’t necessarily mean one doesn’t exist.

If I were you, I would check out trac more thoroughly and if you can’t
find anything related to it, open a ticket. be sure to include a
test. My guess is that demodulize is getting called on the class name
when it shouldn’t be.

Also, if you were to replace the type from ‘Dog’ to ‘Animals::Dog’ in
the database, it loads the record just fine.

in the meantime, i would just put all your animal models in your main
app/models directory, and change the class definitions from

class Animals::Dog < Animal
end

to

class Dog
end

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