# Abstract superclass for model

**URL:** <https://www.ruby-forum.com/t/abstract-superclass-for-model/193829>\
**Category:** Rails\
**Created:** [August 25, 2010, 7:07am UTC](https://www.ruby-forum.com/t/abstract-superclass-for-model/193829 "2010-08-25T07:07:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sunfish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/96bed5/32.png) [@sunfish](https://www.ruby-forum.com/u/sunfish)\
**Post date:** [August 25, 2010, 7:07am UTC](https://www.ruby-forum.com/t/abstract-superclass-for-model/193829/1 "2010-08-25T07:07:00Z")

</div>

Hi,

I am using ‘set\_table\_name’ in all my models, I want one abstract class  
which extends from ActiveRecord::Base and all my model should extends  
from this abstract class. i will write setter method in abstrct class  
which will set table name also i am able to override that method in my  
model. my question is this is possible in rails? how to implement this  
in rails?

e.g:-

class Abstract \< ActiveRecord::Base  
def set\_table\_name(table\_name)  
return “prefix” + table\_name  
end  
end

class Photo \< Abstract  
? From here hoe to make a call for set\_table\_name  
end

---

<div class="post-metadata">

**Author:** ![sunfish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/96bed5/32.png) [@sunfish](https://www.ruby-forum.com/u/sunfish)\
**Post date:** [August 25, 2010, 9:06am UTC](https://www.ruby-forum.com/t/abstract-superclass-for-model/193829/2 "2010-08-25T09:06:56Z")

</div>

On Aug 25, 6:07 am, Sunny B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi,
> 
> I am using ‘set\_table\_name’ in all my models, I want one abstract class  
> which extends from ActiveRecord::Base and all my model should extends  
> from this abstract class. i will write setter method in abstrct class  
> which will set table name also i am able to override that method in my  
> model. my question is this is possible in rails? how to implement this  
> in rails?

If all you want to do is add a prefix, I’d just set  
Abstract.table\_name\_prefix

Fred

---

<div class="post-metadata">

**Author:** ![sunfish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/96bed5/32.png) [@sunfish](https://www.ruby-forum.com/u/sunfish)\
**Post date:** [August 25, 2010, 9:08am UTC](https://www.ruby-forum.com/t/abstract-superclass-for-model/193829/3 "2010-08-25T09:08:41Z")

</div>

try something like this. U need not call set\_table\_name from child class  
as  
long as model name  
matches with database table using prefix string.

class Abstract \< ActiveRecord::Base  
set\_table\_name “some\_prefix\_#{self.to\_s.tableize}”  
end

If you want to override then

class Photo \< Abstract  
set\_table\_name “some\_different\_table\_from regular pattern”  
end

On Wed, Aug 25, 2010 at 10:37 AM, Sunny B.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

–  
Sandip

* * *

blog [www.funonrails.com](http://www.funonrails.com)  
twitter @sandipransing
