ActiveRecord двусторонний внешний ключ. - PullRequest
1 голос
/ 19 апреля 2011

Я использую некоторые открытые данные в MYSQL, которые я импортировал в мое приложение rails.

Я расширил базу данных некоторыми из своих собственных таблиц и использую идентификаторы столбцов, предоставленные рельсами, в своих таблицах.

Однако таблицы исходной базы данных связаны уникальным идентификатором 'ndb'.

Я думал, что путем перекрестных ссылок на две :foreign_key=>'ndb' между моделями я получу таблицы, связанные правильно, но через :foreign_key, похоже, он связывает id из одной таблицы со столбцом ndb другой.

Мои модели выглядят так

class Food < ActiveRecord::Base
has_many :weights, :foreign_key=>'ndb'
has_many :food_names
end

class Weight < ActiveRecord::Base
belongs_to :food, :foreign_key=>'ndb'

Есть ли способ указать, что столбец 'ndb' является связующим звеном между таблицей food и weights, а не food_id к ndb?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

В качестве возможного временного решения я использовал :finder_sql для связывания таблиц вместе.

Модель My Food теперь имеет:

class Food < ActiveRecord::Base
  has_many :weights, :finder_sql =>'Select weights.* FROM weights LEFT JOIN foods ON foods.ndb=weights.ndb WHERE foods.id=#{id}'

Я не уверен, является ли это лучшим решением или нет, но, похоже, оно работает.

0 голосов
/ 19 апреля 2011

Вы пробовали set_primary_key 'ndb' в своих классах AR?

set_primary_key документы.

...