2010-07-08 10 views

risposta

11

Bene, la maggior parte del tipo è veramente è smart-convention over configuration ha alcuni vantaggi molto reali. ;-)

Dove la convenzione non funziona, come nel tuo caso, c'è (probabilmente - almeno, ne ho sempre trovato uno finora ...) un modo per aggirarlo. Per gli schemi legacy ci sono un paio di possibilità che vengono subito in mente.

  • Creare una vista a tabella singola nel database precedente che rimappa le colonne per evitare i nomi convenzionali di AR. Non serve molto se non hai le autorizzazioni CREATE VIEW sul DB, ovviamente, o se il tuo DB non ha viste;
  • Override l'uso :type come indicatore STI utilizzando set_inheritance_column, così

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

Uso set_inheritance_column: questa è la soluzione migliore. –

2

In Rails 4 set_inheritance_column è obsoleto e self.inheritance_column dovrebbe utilizzare invece:

class LegacyValue < ActiveRecord::Base 
    self.inheritance_column = 'does_not_have_one' 
end 
Problemi correlati