2015-09-18 16 views
6

Ho una tabella Gift nel mio schema di regno. Ora ho bisogno di rinominare Gift.class a UserBonus.class e aggiungere alcuni nuovi parametri (non un problema). Qual è il modo corretto per farlo?Rename Realm table

So che realm.getTable() può tornare me il tavolo, il problema è che il vecchio Gift esiste nello schema, ma in realtà non ho Gift.class (ora è UserBonus e getTable() mi nuova tabella creata tornerà) quindi non posso invecchiare valori della tabella del regalo e spostali nella nuova tabella Bonus.

L'unico modo in cui lo vedo, a sinistra vuoto Gift.class e usarlo solo per la migrazione.

Grazie per qualsiasi consiglio,
Yakiv

risposta

2

Attualmente mi ha attuato come segue:

  • aggiunti nuovi UserBonus.class
  • aggiunto @deprecated a Gift.class
  • copia tutti i dati da Gift table to UserBonus table

    // added bonus types 
    Table userBonus = realm.getTable(UserBonus.class); 
    userBonus.addColumn(ColumnType.STRING, "localId"); 
    userBonus.addColumn(ColumnType.INTEGER, "type"); 
    userBonus.addColumn(ColumnType.INTEGER, "date"); 
    userBonus.addColumn(ColumnType.STRING, "userName"); 
    userBonus.addColumn(ColumnType.STRING, "userNumber"); 
    userBonus.addColumn(ColumnType.STRING, "credits"); 
    
    // move Gift to UserBonus 
    RealmResults<Gift> gifts = realm.where(Gift.class).findAll(); 
    for (Gift gift :gifts) { 
        userBonus.add(
          gift.getLocalId(), 
          UserBonus.TYPE_FRIEND, 
          gift.getDate(), 
          gift.getUserName(), 
          gift.getUserNumber(), 
          gift.getCredits() 
        ); 
    } 
    realm.where(Gift.class).findAll().clear(); 
    
4

Forse la mia risposta sarà superata, ma ora in Realm su Android c'è un metodo 'rinominare', alla possibilità di rinominare tabella (modello) nello schema. Codice sarà simile a questo:

RealmSchema schema = Realm.getInstance().getSchema(); 
schema.rename("OldModelName", "NewModelName"); 

e dovrebbe funzionare!

Inoltre è possibile vedere tutte le funzioni di migrazione (dal 25 giu 2015) - https://github.com/realm/realm-java/pull/1239