Ruby on Rails: соединение двух таблиц на чем-то отличном от стандартного внешнего ключа - PullRequest
1 голос
/ 24 января 2010

У меня есть запрос рельсов, например:

     @user = User.find_by_username(params[:search], :include => [:user_similars])    

Модели: пользователь (has_many: пользователь_схожие), пользователь_схожий (принадлежит_пользователю)

В таблице mysql user_simils есть поле user_id в качестве внешнего ключа, но я не хочу: include для подключения к этому для этого экземпляра. Я хотел бы присоединиться к другому полю с именем "user_id_simil"

Есть ли параметр для изменения способа: include ведет себя, чтобы он мог присоединиться к другому полю?

Или я должен использовать: присоединиться с другой опцией?

Или, может быть, отредактировать объявления метода модели?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 24 января 2010

Спасибо, Тоби! В пользовательской модели пользователя я добавил:

has_many :user_similars, :foreign_key => "user_id_similar"

и это решило.

1 голос
/ 24 января 2010

Когда вы определяете отношения между двумя таблицами, вы можете указать, какой столбец использовать в качестве внешнего ключа. В этом случае установите «user_id_simil» как FK, и include должен затем использовать это при выполнении объединения.

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