2013-04-11 2 views
0

Я хочу создать две модели с почти одинаковыми структурами. Но я хочу сохранить наборы данных в двух разных таблицах. Возможно ли это в активной записи?рельсы один базовый класс, две модели и две таблицы db

Причина для разных таблиц заключается в том, что я хочу, чтобы запрос, который не возвращает никаких значимых результатов, таких как «нет активной модели существует с этими свойствами ...» или «не существует неактивной модели с этими свойствами ... "

Кроме того, классы ведут себя почти одинаково, поэтому абстрактная или базовая модель важна для поддержания ее сухим. Но я хочу работать с явно названными моделями, чтобы я знал, что работаю с «активными» или «неактивными» данными.

Я бы предположил, что классы моделей выглядят примерно так, но я не совсем уверен, как модели ссылаются на разные таблицы. Это возможно?

class BaseModel < ActiveRecord::Base 
    attr_accessible :foo, :bar, 

end 

class ActiveModel < BaseModel 
    # This class gets its data from table :active_models 

end 

class InactiveModel < BaseModel 
    # This class gets its data from table :inactive_models 

end 

ответ

2

Для этого вы можете использовать ActiveRecord::Base.table_name=.

В качестве альтернативы, если ваши модели имеют соответствующие названия, вы можете использовать ActiveRecord::Base.table_name_prefix= или ActiveRecord::Base.table_name_suffix=.

class BaseModel < ActiveRecord::Base 
end 

class ActiveModel < BaseModel 
    # This class gets its data from table :active_models 
    self.table_name = 'active_models' 
end 

class InactiveModel < BaseModel 
    # This class gets its data from table :inactive_models 
    self.table_name = 'inactive_models' 
end 
+0

Спасибо! Это проще, чем я думал. –

Смежные вопросы