Настройка моделей и ассоциаций Rails - PullRequest
1 голос
/ 29 ноября 2011

У меня есть таблица компаний и таблица status_codes Компания может иметь только один код_состояния

COMPANIES
  id int PK
  name varchar
  status_code_id int FK

STATUS_CODES
id PK
name varchar   (Live, Inactive, Deleted)

Я пытаюсь настроить это в рельсах со следующими моделями / ассоциациями

class Company < ActiveRecord::Base
  has_one :status_code
end

class StatusCode < ActiveRecord::Base
  belongs_to :company
end

Проблема возникает с belongs_to :company, он ожидает внешнего ключа company_id в таблице status_codes ...

Мне нужны все коды состояния в одной таблице, поэтому, если мне нужно изменить имя кода состояния, я изменяю его только один раз, и все компании показывают недавно обновленное имя кода состояния ...

Могу ли я установить рельсы с моим макетом таблицы базы данных или есть лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Общее правило состоит в том, что сторона ассоциации, которая содержит внешний ключ, должна иметь belongs_to :other_model, а обратная сторона должна иметь has_many.

0 голосов
/ 29 ноября 2011

Я считаю, что в этом случае вам нужен StatusCode has_many: companies. Таким образом, после того, как вы измените код состояния, все компании будут показывать обновленное имя кода статуса.

class Company < ActiveRecord::Base
  belongs_to :status_code
end

class StatusCode < ActiveRecord::Base
  has_many :companies
end

Конечно, вам понадобится внешний ключ status_code_id в таблице компаний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...