Migracja Railsów nie zapewnia żadnego sposobu na dodanie ograniczeń, ale nadal możesz to zrobić poprzez migrację, ale przez przekazanie rzeczywistego SQL do execute()
Utwórz plik migracji:
ruby script/generate Migration AddConstraint
Teraz w pliku migracji:
class AddConstraint < ActiveRecord::Migration
def self.up
execute "ALTER TABLE table_name ADD CONSTRAINT check_constraint_name CHECK (check_column_name IN (1, 2, 3) )"
end
def self.down
execute "ALTER TABLE table_name DROP CONSTRAINT check_constraint_name"
end
end