2013-10-14 2 views
0

У меня есть базовая база данных со структурой вроде этого.Rails 2.1 принадлежит_от первичного ключа

products 
------------------ 
id 
serial 

order 
------------------ 
id 
product_serial 

К сожалению, я не могу изменить структуру БД. Я просмотрел документы для Rails 2.1 и сказал, что могу настроить такие отношения.

belongs_to :product, 
      :class_name => 'Product', 
      :foreign_key => 'product_serial', 
      :primary_key => 'serial' 

Однако, это дает мне эту ошибку.

Unknown key: primary_key 

без первичного ключа производит этот SQL

SELECT * FROM `products` WHERE (`products`.`id` = #{serial}) 

Как настроить в belongs_to отношения по этому поводу?

EDIT Для справки, я работаю в Rails 2.1. (Я знаю, не говорите мне).

+1

Вам не нужно указывать ': class_name', поскольку это выводится из отношения. – harm

+0

Извините, не следует было включать это. У меня уже был метод с именем 'product', поэтому я использовал сокращенное имя и, следовательно, требовал имя класса. – screenmutt

ответ

1

Если вы проверите available options for the belongs_to association для ветки Rails 2, вы увидите, что :primary_key не является одним из них.

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

+0

Не так в Rails 4: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to – harm

+0

OP использует Rails 2, это была также версия документов, с которой я связан в моем ответ. – depa

+0

Странно, я посмотрел его на APIDoc: http://apidock.com/rails/v2.1.0/ActiveRecord/Associations/ClassMethods/belongs_to и теперь запутался. :) – harm

0

У вашей модели order нет поля (и, следовательно, метода), который называется serial. Вам не нужно указывать его, тогда он по умолчанию равен id (что у вас есть).

Смежные вопросы