Можно ли запретить "ноль" для одной из двух переменных на уровне миграции?

Author принадлежит либо к статье, либо к книге, и никогда к обоим. В файле миграции для автора у меня есть:

t.references :article, index: true
t.references :book,    index: true

В файле модели:

  validate :article_or_book_id

  def article_or_book_id
    if article_id.present? && book_id.present?
      errors.add(:article_id, "An author has to have either a book or article")
    elsif !article_id.present? && !book_id.present?
      errors.add(:article_id, "This author has no article nor a book")
    end
  end

Вопрос: Как я могу добавить в файл миграции, что либо :article или же :book не может быть null?

1 ответ

Решение

Как насчет использования polymorphic association?

Вот учебник:

полиморфная ассоциация

Другие вопросы по тегам