2012-01-04 4 views
0

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

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

Это трудно объяснить ...

Пример

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.

ответ

0
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 
0

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

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.

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