I have a Release
model with medium
and country
columns (among others). There should not be releases
that share identical medium
/country
combinations.
How would I write this as a rails validation?
You can use a uniqueness validation with the scope
option.
Also, you should add a unique index to the DB to prevent new records from passing the validations when checked at the same time before being written:
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