Me gustaría poder usar una identificación personalizada (en lugar de las automáticas de incremento automático) para un modelo de Rails. Básicamente, todas las identificaciones serán identificadores de la tienda iTunes, que son enteros largos. ¿Es posible desactivar los identificadores de autoaumento automático predeterminados y exigir que se establezca uno? Estos identificadores también se usarán como claves foráneas en otros modelos.Posible columna de "Id" de ActiveRecord no autoincrementada posible?
Respuesta
Algo como esto:
create_table :blah, {:id => false} do |t|
t.int :my_custom_int_id
end
execute "ALTER TABLE blah ADD PRIMARY KEY (my_custom_int_id);"
Es posible ajustar manualmente la ID antes de guardar el modelo.
a = Model.new
a.id = 8888 #from itunes
a.save
Sin embargo, se debe considerar un campo separado llamado itunes_id
en lugar de este enfoque.
Actualmente estoy usando un campo 'itunes_id' separado como usted describe. El problema es que la API que estoy usando devuelve ID de iTunes, por lo que es complicado realizar una búsqueda adicional de itunes_id -> mi ID de modelo todo el tiempo. – markquezada
Me gusta mucho cómo dijiste lo que debería hacer, pero también me ofreció tu consejo ... las mejores prácticas ... :) – baash05
@daveatflow Esa es la opinión personal, no la mejor práctica de la OMI. –
- 1. Problema con la columna "id" autoincrementada
- 2. ActiveRecord .select(): ¿es posible borrar selecciones antiguas?
- 3. GroupBy con Id de posible objeto nulo
- 4. ¿Es posible que un dominio de Grails no tenga 'id'?
- 5. ¿Es posible hacer referencia a una columna que no sea 'id' para JoinColumn?
- 6. ¿Es posible conseguir el objeto ActiveRecord :: Relación de una asociación
- 7. ActiveRecord Find All no ordena por ID?
- 8. seleccionar ... donde id = cualquier valor. ¿Es posible?
- 9. Rails ActiveRecord: ¿Es posible una consulta combinada: incluir y: condiciones?
- 10. Insertar una clave primaria autoincrementada en una tabla de acceso
- 11. Enviar solicitud no posible
- 12. Comparta clave primaria autoincrementada entre dos tablas
- 13. ¿Es posible establecer columna predeterminada en NewId() de SQL Server?
- 14. ¿Es posible establecer las propiedades CSS por el prefijo id?
- 15. ¿Es posible acceder a una columna de DataGrid de Silverlight por nombre y no por índice de columna?
- 16. ¿Es posible actualizar la lista Sharepoint sin "ID"?
- 17. Cuándo utilizar una clave principal autoincrementada y cuándo no?
- 18. C# OpenFileDialog No modal Posible
- 19. ASP.Net FindControl no funciona - ¿Cómo es posible?
- 20. En Oracle, ¿es posible "insertar" una columna en una tabla?
- 21. ¿Es posible concatenar cadenas de varias filas y tablas en una columna de resultados?
- 22. ¿Es posible reutilizar subconsultas?
- 23. Posible búsqueda de tipo ViM en Visual Studio ¿es posible?
- 24. En una migración de Rails, ¿es posible indicar que una columna recién agregada debería estar antes o después de una columna existente en la tabla?
- 25. Nesting Sitecore sublayouts/placeholders - posible?
- 26. Postgresql referencia de columna "id" es ambiguo
- 27. Posible ocultar una columna SlickGrid SIN eliminarla de la matriz "columnas"?
- 28. ¿Es posible capturar el "ID de mensaje" de un mensaje de correo electrónico enviado con SmtpClient?
- 29. Atributos del modelo de ActiveRecord no persistentes
- 30. CodeIgniter activerecord, recuperar el último id de inserción?
Esto se parece a lo que estaba buscando, gracias. – markquezada
También necesitará agregar 'set_primary_key: my_custom_int_id' (Rails 3) o' self.primary_key =: my_custom_int_id' (Rails 4) en su modelo. – gregoltsov