سؤال

لدي نموذج مستخدم لديه العديد من المعارك. القتال ينتمي إلى المستخدم.

هناك مفتاحان أجنبيان في جدول المعارك يشيران إلى المستخدم PK - Challenger_id و Challenge_ID.

الحيلة هي كيف يمكنني كتابة جمعية HAS_MANY على نموذج المستخدم بحيث تُرجع المعارك إلى حيث user_id = Challenger_ID أو Challenge_id؟

هل كانت مفيدة؟

المحلول

أعتقد أنه يجب عليك استخدام رابطتين منفصلتين وأن تنشئ طريقة لإعادة جميع المعارك. أليس من الممكن يومًا ما ستحتاج إلى الحصول على فقط fights حيث بعض @user كان challenger?

سأفعل هذا مثل ما يلي:

class User < ActiveRecord::Base
   has_many :fights_as_challenger, :foreign_key => :challenger_id,
      :class_name => "Fight"
   has_many :fights_as_challengee, :foreign_key => :challengee_id,
      :class_name => "Fight"

   def all_fights
      self.fights_as_challenger + self.fights_as_challengee
   end 
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top