Hi there,

On Thu, 2010-09-16 at 18:12 -0700, DanielMedia wrote:
> I'm very new to Ruby and to Rails. I'm coming from PHP and CakePHP.
> 
> I would like to create a base model from which all other models will
> inherit from.
> 
> I have done this:
> 
> class AppModel < ActiveRecord::Base
> end
> 
> and
> 
> class Post < AppModel
> end
> 
> I'm getting the following error:
> 
> Table 'blog_development.app_models' doesn't exist
> 
> My question is, how do I tell Rails not to look for a table named
> "app_models" AND am I even taking the right approach here? Is there a
> better way to do this?

Short answer: Use set_table_name
<http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-set_table_name>
 in Post. [Though I haven't tried this and there may be further complications.]

Long answer: You're almost certainly doing the wrong thing. If you want
to share code between non-similar models, don't do it using inheritance.
Create a module which encapsulates the functionality (people tend to put
such stuff in the lib/ directory), and include the module in the models
instead.

If it might be useful for several different projects, you could put your
module in a plugin, and then have the module automatically include
itself in ActiveRecord::Base (therefore making its behaviour available
to all models).

Hope that helps,

Jon

-- 
http://jonathanleighton.com/

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