2014-02-03 3 views
0

У меня есть 3 модели, персона, игрок и травма.ActiveRecord Динамический: has_many foreign_key

Игрок = #<Player id: 9999, name: "Bob the player", person_key: "some-unique-key">

Person = #<Person id: 1234, person_key: "some-unique-key">

Травма = #<Injury id: 8374, injury: "Hurt", person_id: 1234>


игрока - has_one :person, :foreign_key => :person_key, :primary_key => :person_key

Человек - has_one :player, :foreign_key => :person_key, :primary_key => :person_key

Травма - belongs_to :person


я в первую очередь работать с игроком, и мне нужно, чтобы иметь возможность иметь отношения has_many от игрока к травмам

Player.injury должен сделать что-то похожее на;

Player - has_many :injuries, :foreign_key => :person_id, :primary_key => { self.person.id }

Я понимаю, что вы не можете сделать self.person.id там, но это отношение мне нужно. (Я не разрабатывал эти отношения, это просто то, с чем мне нужно работать.)

Мысли?

+0

Просто из любопытства, почему у вас есть отдельный 'person_key' поле? Похоже, вы используете его для формирования отношений между «Player» и «Person», но лучше всего использовать «has_one» и «own_to» вместо обычного обычного ключа - отношения внешнего ключа, не? –

ответ

2

Вы должны добавить folowing отношения:

Person - has_many :injuries 
Player - has_many :injuries, through: :person 
+0

Gah! Клянусь, я пробовал это, и это не сработало. ха! Благодарю. –

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