Tengo un Release
modelo con medium
y country
columnas (entre otros). No debería haber releases
ese compartir idéntico medium
/ country
combinaciones.
¿Cómo escribiría esto como una validación de rieles?
ruby-on-rails
ruby-on-rails-3
ruby-on-rails-4
activerecord
rails-activerecord
Jackson Cunningham
fuente
fuente
Respuestas:
Puede usar una validación de unicidad con la
scope
opción.Además, debe agregar un índice único a la base de datos para evitar que nuevos registros pasen las validaciones cuando se verifiquen al mismo tiempo antes de escribirse:
fuente
unique
ya que no se reconoce. Para esa parte, he usado la respuesta a continuación.uniqueness
, nounique
. Ver la documentación vinculada. Arreglando la respuesta.A todas las respuestas anteriores les falta cómo validar la unicidad de múltiples atributos en un modelo. El siguiente código tiene la intención de decir cómo usar múltiples atributos en un ámbito.
Valida la unicidad de
country
en todas las filas con valores demedium
yanother_medium
.Nota: No olvide agregar un índice en la columna anterior, esto asegura una recuperación rápida y agrega una validación de nivel de base de datos para registros únicos.
Actualización: para agregar un índice al crear una tabla
fuente
Puede pasar un
:scope
parámetro a su validador así:Vea la documentación para algunos ejemplos más.
fuente