нетрадиционные внешние ключи в рельсах - PullRequest
0 голосов
/ 12 августа 2010

У меня есть некая устаревшая структура БД с рельсами.Он имеет такую ​​структуру, как:

apples
    id:
    number:
  oranges
    apple_id: (links to apples.number)
  pears
    apple_id: (links to apples.id)

Модели типа:

Apple  has_many :oranges, :foreign_key => ?, :primary_key => ?
       has_many :pears
Orange belongs_to :apple, :foreign_key => ?, :primary_key => ?
Pears  belongs_to :apple

Я застрял в том, как написать ассоциацию.У меня возникают трудности с пониманием документации по внешним ключам и первичным ключам, которая идет с has_many и own_to

Ответы [ 2 ]

0 голосов
/ 12 августа 2010

Решение закончилось так:

Apple  has_many :oranges, :primary_key => :number
       has_many :pears
Orange belongs_to :apple, :primary_key => :number
Pears  belongs_to :apple

Я оказался на неверном пути, предположив, что :foreign_key как-то связан с чем-то.

0 голосов
/ 12 августа 2010

: foreign_key

Укажите внешний ключ, используемый для ассоциации. По умолчанию это имя этого класса в нижнем регистре и суффикс "_id". Таким образом, класс Person, который создает ассоциацию has_many, будет использовать "person_id" по умолчанию: foreign_key.

: primary_key

Укажите метод, который возвращает первичный ключ, используемый для ассоциации. По умолчанию это id.

все зависит от строк в ваших таблицах

...