Я пытаюсь использовать таблицу соединений с внешним ключом, который не заканчивается _id и указывает на первичный ключ не id. Вот что у меня есть.Rails 3 - Join Table with not _id Columns
Моя присоединиться таблица выглядит так:
[DepatmentsLocales] (
department_id
locale_code
display_name
)
Вот мои модели:
class Locale < ActiveRecord::Base
has_many :departments, :through => :departments_locales
end
class Department < ActiveRecord::Base
has_many :locales, :through => :departments_locales
end
class DepartmentLocale < ActiveRecord::Base
belongs_to :department
belongs_to :locale, :foreign_key => :locale_code, :primary_key => :code
end
Тем не менее, Rails не может найти ассоциацию. Когда я звоню в отделение.locales, я получаю:
ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :departments_locales in model Department
Любые идеи, что мне не хватает?
Спасибо за ваш ввод. Функционально это работает, но я не считаю его чистым. Я хотел бы избежать «id» в качестве первичного ключа в таблице соединений и не использовать department_locales как Entity. Я думаю, в моем случае я принесу его с помощью SQL. –
Обратите внимание, что вы можете установить первичный ключ в таблицу модели DepartmentLocale на все, что хотите, используя метод primary_key в модели. Надеюсь, ты все получишь так, как хочешь! Удачи –