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
I have done this:
class AppModel < ActiveRecord::Base
class Post < AppModel
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
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,