Почему мои ассоциации не идут в обе стороны в ActiveRecord? - PullRequest
0 голосов
/ 17 декабря 2011

Итак, я подключаюсь к устаревшей базе данных.У меня есть две таблицы, Sites и States.

A Site имеет одну State, а State может принадлежать многим Sites

# Sites.rb
has_one :state, :primary_key => "StateKey", :foreign_key => "StateKey"

# States.rb
belongs_to :sites, :class_name => "Sites", :primary_key => "SiteKey", :foreign_key => "SiteKey"

AsВы можете видеть, что я должен вручную установить внешние ключи и первичные ключи.

Так что это работает:

Sites.first.state  # one record returned (the state)

Это не так:

States.first.sites  # nil returned.  Doesn't even appear to hit AR

Что яне так?

Спасибо.

1 Ответ

1 голос
/ 05 января 2012

Вы должны использовать пару has_many, belongs_to:

# Sites.rb
belongs_to :state, :primary_key => "StateKey", :foreign_key => "StateKey"

# States.rb
has_many :sites, :class_name => "Sites", :primary_key => "StateKey", :foreign_key => "StateKey"

Взгляните на это руководство .

Если у вас есть связь один-ко-многим, стандартная практика - использовать belongs_to и has_many в двух модельных классах. has_one является частным случаем has_many. belongs_to говорит, что внешний ключ находится в модели, объявляющей связь, а has_one, has_many говорят, что внешний ключ находится в другой модели.

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