Переход от 2 до многих в Rails - PullRequest
1 голос
/ 23 февраля 2009

У меня есть приложение Rails, которое я нахожусь в процессе разработки. У меня есть отдельная модель, которую нужно связать только с 2 из одной модели. В частности, мои «оценки» имеют 2 «участника», оценщика и оцениваемого. У них также есть несколько других частей информации, но они не должны относиться к этому.

Как лучше всего это представить? Будут ли лучше 2 внешних ключа в оценке, или много-много отношений между оценками и участниками? Будет ли какой-то другой вариант, который будет работать еще лучше?

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

Ответы [ 2 ]

1 голос
/ 23 февраля 2009

Возможно, вам нужны две разные ассоциации, возможно, с одним и тем же классом:

class Member < ActiveRecord::Base
  has_many :evaluations_out, :class_name => 'evaluation', :as => :evaluator
  has_many :evaluations_in, :class_name => 'evaluation', :as => :evaluatee
end

class Evaluation < ActiveRecord::Base
  belongs_to :evaluator, :class_name => 'member'
  belongs_to :evaluatee, :class_name => 'member'
end
0 голосов
/ 24 февраля 2009

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

Оценочная модель

class Evaluation < ActiveRecord::Base 
  belongs_to :evaluator, :class_name => "Member", :foreign_key => "evaluator_id"
  belongs_to :evaluatee, :class_name => "Member", :foreign_key => "evaluatee_id"

end

Модель участника

class Member < ActiveRecord::Base
  has_many :evaluators, :class_name => "Evaluation", :foreign_key => "evaluator_id"
  has_many :evaluatees, :class_name => "Evaluation", :foreign_key => "evaluatee_id"

end
...