Я хотел бы сделать это на Ruby Datamapper:
Создайте таблицу, а затем выполните оператор SQL (необработанный). Моя БД сейчас SQLite. Я проверил http://datamapper.org/docs/callbacks.html, но это не так. есть что-нибудь о добавлении обратного вызова после построения таблицы. Я говорю это, потому что мне нужно добавить ограничение напрямую или что-то вроде таблицы изменений после того, как все мои таблицы были сгенерированы. Ограничение представляет собой unique_index по нескольким ключам из другой таблицы. Что-то вроде этого:
class Score
belongs_to :pageant, :unique_index => :single_score
belongs_to :candidate, :unique_index => :single_score
belongs_to :category, :unique_index => :single_score
belongs_to :judge, :unique_index => :single_score
end
В любом случае, я хочу, чтобы каждая комбинация конкурсант-кандидат-категория-судья была уникальной. :unique_index не работает, если я не включу другое поле, не связанное с другой таблицей. Поэтому я просто подумал о добавлении ограничения через необработанный SQL (что я бы и сделал, если бы не использовал ORM).