Aquí está la situación.Cómo guardar Mongoid foreign_key como entero o mantener el modelo principal con Entero id
user embed_one profile
profile belongs_to city
que han poblado una mesa ciudad con
id as Integer
name as String
Ahora estoy haciendo user.update_attributes(:profile_attributes{:city_id=>"5"})
simulando un envío del formulario navegador. Luego verifico user.profile
Veo que city_id está almacenado como una cadena. Esto hace que mi user.profile.city
da cero.
Me pregunto qué es lo que hay que hacer aquí. ¿Debo permitir que mi ID de ciudad sea una cadena o un objeto BSON? ¿O debería intentar interceptar update_attributes para hacer mongoid store city_id como entero? La razón por la que estoy usando Integer como id para la ciudad es porque pensé que buscar en Integer es más rápido que buscar en la cadena. Y también tengo tablas de estado y de ciudad, y quiero hacer coincidir los identificadores de una manera predecible, así que no quiero usar la clave de randome BSON.
esto parece prometedor. pero puede haber muchos métodos para agregar si el problema se relaciona con muchas tablas y muchos atributos. Sería bueno si puedo convertir automáticamente params de cadena a entero si declaro esos atributos como un entero. ¿Monkey parchar a Mongoid, tal vez? – benzhang
¿Cuál es el problema con los objetos bson? – rwz
Estoy portando tablas de estados de la ciudad. Y quiero que el número entero sea una identificación de estado, entonces mi ciudad se refiere al estado correcto. Supongo que puedo usar un atributo separado como clave externa, entonces no me importaría bson como id. – benzhang