Ruby datamapper - обратный вызов при создании таблицы?

Я хотел бы сделать это на 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).


person Daryll Santos    schedule 28.08.2013    source источник


Ответы (1)


Я просто решил это, создав пользовательскую проверку. Я такой глупый.

validates_with_method :check_uniqueness_of_score

def check_uniqueness_of_score
    !(Score.all(pageant_id: self.pageant_id, candidate_id: self.candidate_id, 
        category_id: self.category_id, judge_id: self.judge_id).count > 0)
end
person Daryll Santos    schedule 28.08.2013