has_many и устаревшая схема - PullRequest
1 голос
/ 26 июня 2009

Я ищу совет здесь:

У меня есть две таблицы в устаревшей схеме, A и B, объединенные в A.somename = B.othername. Оба этих столбца являются строками. Так как мне установить отношения между ними в рельсах (v2.1.0)? Учитывая, что A имеет много B, что было бы лучше:

  1. используйте :finder_sql и просто напишите выбор SQL,

  2. настроить отношение через другие параметры (как? Я знаю, что могу установить :foreign_key = 'othername', но это будет просто попытка установить отношение A.id = B.othername - что я могу сделать, чтобы установить правильное?)

  3. что-то еще, что не приходило мне в голову.

Итак, что бы вы предложили?

1 Ответ

1 голос
/ 26 июня 2009

Если по какой-то причине вы застряли с Rails 2.1, лучше всего использовать set_primary_key, например:

class A
  set_primary_key 'somename'
  has_many :bs, :foreign_key => 'othername'
end

Существует также псевдоним, который позволяет использовать для этого атрибутивный синтаксис (self.primary_key = 'somename').

Кстати, если вы можете обновить до 2.3, вы можете использовать опцию primary_key напрямую с has_many, например:

has_many :debitos, :primary_key => 'somename', :foreign_key => 'othername'

Если вы решите использовать это, вам не нужно будет объявлять первичный ключ для класса, используя set_primary_key.

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