Ответ 1
Да, я думаю, вы только что нашли в Rails несколько странный сценарий. Полагаю, было бы полезно рассматривать "статус" как своего рода категорию, к которой относится ошибка - в этом свете это имеет смысл.
Немного нового вопроса о ассоциациях рельсов.
У меня есть модель ошибок и модель состояния. Статус - это просто таблица пар ключ/значение. Из доступных вариантов я бы сказал, что Bug has_one Status имеет наибольший смысл. Однако, согласно this
Содержимое принадлежит_контенту. Идти назад и посмотрим, как я описал проблема, и вы увидите, что она работает. С помощью belongs_to таблица принимает ответственность за внешний ключ. Так Содержимое имеет content_template_id. А также ContentTemplate ничего не требует. Я могу указать на это по своему усмотрению. Готово.
Bug принадлежит_to Статус будет более подходящим (так как Bug должен взять внешний ключ). Семантически, его пример имеет смысл, но мой не делает ничего. Это просто причуда рельсов, где в этой ситуации это выглядит странно, или я не понимаю что-то/делаю это неправильно?
Да, я думаю, вы только что нашли в 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
Вы точно не объяснили, какие отношения между Bug и Status вы хотели бы получить, но я предполагаю, что вас интересует одно из следующих:
belongs_to
в классе Status должно быть has_many
,belongs_to
в классе Status должен быть has_one
.В обоих случаях статус содержит внешний ключ. Во втором случае формулировка немного странная, из-за того, что взаимно однозначное отношение фактически асимметрично (должен быть только FK только с одной стороны).
Если Status является только таблицей поиска/ключевого значения, похоже, что вы хотите habtm (has_and_belongs_to_many
) отношения между статусом и ошибкой. С помощью habtm в итоге вы получите таблицу соединений bugs_statuses
, в которой есть столбцы bug_id
и status_id
, а также ваши таблицы ошибок и статусов.