tutorial rails que ejemplos descargar curso caracteristicas ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 activerecord rails-activerecord

ruby-on-rails - que - ruby on rails tutorial



Rieles: valide la unicidad de dos columnas(juntas) (3)

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.

validates :country, uniqueness: { scope: [:medium, :another_medium] }

Valida la unicidad del country en todas las filas con valores de medium y another_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.

Tengo un modelo de Release con columnas medium y de country (entre otras). No debe haber releases que compartan combinaciones idénticas de medium / country .

¿Cómo escribiría esto como una validación de rieles?


Puede pasar un parámetro :scope a su validador de esta manera:

validates_uniqueness_of :medium, scope: :country

Vea la documentation para algunos ejemplos más.


Puede usar una validación de uniqueness con la opción de scope .

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:

class AddUniqueIndexToReleases < ActiveRecord::Migration def change add_index :releases, [:country, :medium], unique: true end end class Release < ActiveRecord::Base validates :country, uniqueness: { scope: :medium } end