I have a Release model with medium and country columns (among others). There should not be releases that share identical
All the above answers are missing how to validate the uniqueness of multiple attributes in a model. The code below intends to tell how to use multiple attributes in a scope.
validates :country, uniqueness: { scope: [:medium, :another_medium] }
It validates uniqueness of country in all rows with values of medium and another_medium.
Note: Don't forget to add an index on the above column, this insures fast retrieval and adds a DB level validation for unique records.
Update: For adding an index while creating table
t.index [:medium, :another_medium], unique: true