2010-07-08 9 views

Respuesta

11

Bueno, la mayor parte del tipo es realmente es inteligente: la convención sobre la configuración tiene algunos beneficios muy reales. ;-)

Donde la convención no funciona, como en su caso, hay (probablemente - al menos, siempre he encontrado una hasta ahora ...) una forma de evitarlo. Para los esquemas heredados hay un par de posibilidades que vienen inmediatamente a la mente.

  • Cree una vista de tabla única en su base de datos heredada que reasigna columnas para evitar los nombres convencionales de AR. No sirve de mucho si no tiene permisos CREATE VIEW en el DB, por supuesto, o si su DB no tiene vistas;
  • anular el uso de :type como el indicador STI usando set_inheritance_column, así

class LegacyValue < ActiveRecord::Base 
    set_inheritance_column 'does_not_have_one' 
end 
+0

Uso set_inheritance_column: esa es tu mejor apuesta. –

2

En los carriles 4 set_inheritance_column es obsoleto y self.inheritance_column se debe utilizar en su lugar:

class LegacyValue < ActiveRecord::Base 
    self.inheritance_column = 'does_not_have_one' 
end 
Cuestiones relacionadas