Tengo una tabla simple de MySQL con una columna: name
.¿Cómo se define una restricción "única" en una columna de la tabla MySQL en Ruby on Rails 3?
Me gustaría definir una restricción única en esta columna.
que puedo hacer:
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
pero funcionará sólo en el nivel de aplicación, no a nivel de base de datos.
¿Qué sugeriría?
Este la respuesta es mucho mejor que otras. Para una restricción única en columnas múltiples, puede ser así 'add_index: my_models, [: mi_nombre_columna1,: mi_nombre_columna2], único: verdadero' –
¿Cómo se prueba esto? En lo que respecta a Rails, un modelo aún no salvado que viola esta restricción sigue siendo un modelo válido porque pasa las restricciones de la capa de aplicación del modelo. Es un poco complicado tener que tratar de guardarlo y luego ver un error RecordNotUnique de la base de datos. – drewww
drewww: Esto normalmente es útil en situaciones donde tienes un método de fábrica para crear modelos y múltiples hilos de ejecución, donde las limitaciones de la capa de aplicación pueden ser engañadas por el hecho de que las validaciones de registros pueden depender de la presencia de otros registros (ejemplo: nombres de usuario únicos)) – Grayson