Вопрос

Небольшой вопрос новичка об ассоциациях rails.

У меня есть модель ошибки и модель состояния.Status - это, по сути, просто таблица пар ключ / значение.Из доступных вариантов я бы сказал, что статус Bug has_one имеет наибольший смысл.Однако, согласно это

Содержимое принадлежит элементу ContentTemplate.Вернитесь назад и посмотрите, как я описал проблему , и вы увидите, что это работает.С помощью параметра belongs_to таблица принимает на себя ответственность за внешний ключ.Итак Содержимое имеет content_template_id.И ContentTemplate ничего не нужно.Я могу указать на это по своему желанию.Выполнено.

Статус Bug belongs_to был бы более подходящим (поскольку Bug должен принимать внешний ключ).Семантически его пример имеет смысл, но мой - никакого.Это просто причуда rails, где в данной ситуации это выглядит странно, или я чего-то не понимаю / делаю это неправильно?

Это было полезно?

Решение

Да, я думаю, вы только что нашли немного странный сценарий в Rails.Я полагаю, было бы полезно рассматривать "статус" как своего рода категорию, к которой относится ошибка — в этом свете это имеет смысл.

Другие советы

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    belongs_to :status

    Status
    has_many :bugs

Вы не объяснили точно, какую связь между ошибкой и статусом вы хотели бы получить, но я предполагаю, что вас интересует одно из следующих:

  • один ко многим:в этом случае должно быть has_many в классе ошибок и belongs_to в статусном классе,
  • один-к-одному:в этом случае должно быть has_one в классе ошибок и belongs_to в статусном классе.

В обоих случаях Status содержит внешний ключ.Во втором случае формулировка немного странная, из-за того факта, что отношение "один к одному" на самом деле асимметрично (должно быть FK только с одной стороны).

Если Status - это просто таблица поиска / ключ-значение, похоже, вам может понадобиться habtm ( привычка )(has_and_belongs_to_many) связь между статусом и ошибкой.С habtm то, что вы получите в итоге, - это bugs_statuses присоединиться к таблице, которая имеет bug_id и status_id столбцы вместе с вашими таблицами ошибок и статусов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top