# Table\_name question

**URL:** <https://www.ruby-forum.com/t/table-name-question/165426>\
**Category:** Rails\
**Created:** [April 13, 2009, 10:31pm UTC](https://www.ruby-forum.com/t/table-name-question/165426 "2009-04-13T22:31:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniyaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b9bd4f/32.png) [@Daniyaruby](https://www.ruby-forum.com/u/Daniyaruby)\
**Post date:** [April 13, 2009, 10:31pm UTC](https://www.ruby-forum.com/t/table-name-question/165426/1 "2009-04-13T22:31:46Z")

</div>

Hello all!

I want to dynamically change table name for some count of my models.  
I understand that may be it’s bad practice but I simply need it.

I found some solution that works for somebody:

application.rb:  
around\_filter :scope\_rubrics\_partition

def scope\_rubrics\_partition  
Rubric.scope\_rubrics\_partition do  
yield  
end  
end

class Rubric \< ActiveRecord::Base  
def self.scope\_rubrics\_partition  
if true  
set\_table\_name ‘dp\_ru\_rubrics’  
# set\_primary\_key ‘dp\_ru\_rubrics.id’  
else  
set\_table\_name ‘rubrics’  
end  
yield  
ensure  
set\_table\_name ‘rubrics’  
end  
end

Also patch rails to don’t memoize table\_name  
reflections.rb:  
def table\_name  
klass.table\_name  
end

```
  def quoted_table_name
    klass.quoted_table_name
  end

```

But now I get an error like:

Mysql::Error: Unknown column ‘rubrics.id’ in ‘order clause’: SELECT  
`dp_ru_rubrics`.\* FROM `dp_ru_rubrics` ORDER BY rubrics.`id` ASC  
LIMIT 0, 15

So, how in the end set table name dynamically in production mode too?  
Thank you!  
p.s: sorry for poor english)
