Один и тот же внешний ключ используется для нескольких уникальных полей - PullRequest
0 голосов
/ 04 января 2012

Быстрый вопрос в RoR: можно ли использовать два поля с использованием внешних ключей от одной модели?

Например, я работник. Я хочу два поля: мой текущий магазин и магазин, в который я буду перемещен в будущем. В моей модели, как я могу иметь два поля, которые имеют одинаковый внешний ключ, но с разными значениями.

Сложно объяснить ...

Пример

EMPLOYEE TABLE
----------------------------------------------
Name        Current Shop ID       Next Shop ID
John Doe    2                     1 

SHOP TABLE
----------------------------
ID          Shop Name
1           Jims Tools
2           Johns Tools

В модели Employee я хочу, чтобы и Current Shop, и Next Shop были внешними ключами от модели Shop.

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Если внешний ключ не соответствует имени таблицы, вам просто нужно указать его.Но вы можете иметь столько, сколько хотите.

class Employee < ActiveRecord::Base 
  blongs_to :current_shop, :class_name => Shop, :foreign_key => "current_shop_id"
  blongs_to :next_shop, :class_name => Shop, :foreign_key => "next_shop_id"
end

Здесь важно отметить, что вы должны указать belongs_to в модели с внешним ключом.Если у Employee есть ключ, который ссылается на Shop, то Employee belongs to a Shop.

То же, что если у Comment есть пост-ключ Foreign_key, то Comment belongs to a Post.

0 голосов
/ 04 января 2012
class Employee < ActiveRecord::Base
  has_one :current_shop, :class_name => Shop
  has_one :next_shop, :class_name => Shop
end

class Shop < ActiveRecord::Base
  belongs_to :current, :class_name => Employee
  belongs_to :next, :class_name => Employee
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...