[Ror-es] Ampliando ActiveRecord::Migration y cómo escribir en schema.rb
Fernando Guillen
fguillen.mail at gmail.com
Sat Jun 27 02:32:56 GMT 2009
Pues no estoy encontrando una salida.. por lo menos no una sencilla.
Como bien dice alarkspur ( lo he escrito bien? ) a través de la task
db:schema:dump llegamos a:
ActiveRecord::SchemaDumper.dump()
Y a de aquí a ActiveRecord::SchemaDumper.new.dump() y de aquí a:
SchemaDumper#tables y de aquí a SchemaDumper#indexes:
def indexes(table, stream)
if (indexes = @connection.indexes(table)).any?
add_index_statements = indexes.map do |index|
statment_parts = [ ('add_index ' + index.table.inspect) ]
statment_parts << index.columns.inspect
statment_parts << (':name => ' + index.name.inspect)
statment_parts << ':unique => true' if index.unique
' ' + statment_parts.join(', ')
end
stream.puts add_index_statements.sort.join("\n")
stream.puts
end
end
Los índices normales (no claves foráneas) se imprimen en el schema.rb
con el código de arriba.
Si quiero que se impriman también los de clave foránea debería hacer
un método parecido a éste... pero éste lo tiene fácil porque en el
objeto 'index' tiene todo lo que necesita:
class IndexDefinition < Struct.new(:table, :name, :unique,
:columns) #:nodoc:
end
Pero yo no :/.. se me ocurre que habría que ampliar esta estructura
para almacenar la tabla destino y el campo del índice.. además de un
hueco para diferenciar un tipo de índice de otro.. y luego mirar a ver
cómo se cargan las instancias de esta clase para cargar también mis
datos..
En fín.. creo que hay demasiada gente.. el tiro no está claro
Si se os ocurre algo comentarlo a ver
Saludos
f.
--
Fernando Guillén
Desarrollador Web Freelance
http://www.fernandoguillen.info
http://spainrb.org/fernando-guillen
More information about the Ror-es
mailing list