Ecco la situazione.Come salvare Mongoid foreign_key come numero intero o mantenere il modello principale con ID intero
user embed_one profile
profile belongs_to city
ho popolato una tabella città con
id as Integer
name as String
Ora sto facendo user.update_attributes(:profile_attributes{:city_id=>"5"})
la simulazione di un invio di un modulo del browser. Poi controllo user.profile
Vedo che city_id è memorizzato come stringa. Questo rende il mio user.profile.city
dare zero.
Mi chiedo quale sia la cosa giusta da fare qui. Dovrei lasciare che la mia città id sia stringa o oggetto BSON? O dovrei provare a intercettare update_attributes per rendere store_id mongoid come intero? La ragione per cui sto usando Integer come id per city è perché pensavo che la ricerca attraverso Integer fosse più veloce della ricerca attraverso la stringa. Inoltre ho tabelle statali e urbane e voglio abbinare gli id in modo prevedibile, quindi non voglio usare la chiave randome BSON.
questo sembra promettente. ma possono essere molti metodi da aggiungere se il problema riguarda molte tabelle e molti attributi. Sarebbe bello se posso convertire automaticamente i parametri stringa in intero se dichiaro quegli attributi come numeri interi. Scimmia che si adatta a Mongoid, forse? – benzhang
Qual è il problema con gli oggetti Bson? – rwz
Sto eseguendo il porting delle tabelle degli stati della città. E voglio che l'intero sia un ID di stato, quindi la mia città si riferisce allo stato giusto. Immagino di poter usare un attributo separato come chiave esterna, quindi non mi dispiacerebbe come ID. – benzhang