سؤال

أحاول إنشاء تطبيق يحتوي على أنواع مختلفة من المستخدمين ، أستخدم AuthLogic لمصادقة المستخدم.

لذلك لدي نموذج مستخدم واحد يحتوي على الحقل المطلوب لـ AuthLogic للقيام بسحره. أريد الآن إضافة طرازين مختلفان من شأنه أن يصف الحقول الإضافية لأنواع المستخدمين المختلفة.

دعنا نقول أن المستخدم يسجل ، ثم يختار نوع المستخدم الخاص به ، عندما يتم تسجيله للتسجيل ، سيكون قادرًا على إضافة معلومات خاصة بنموذج المستخدم الخاص به.

ما هي أفضل طريقة للقيام بذلك؟ أنا أبحث حاليًا في نماذج متعددة الأشكال ، لكنني لست متأكدًا من أن هذا هو أفضل طريق لأخذه. أي مساعدة سيكون موضع تقدير كبير، وذلك بفضل.

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

المحلول

يمكنك إنشاء مختلف profile الجداول وربط الملف الشخصي للمستخدم. لذلك لكل نوع مستخدم ، يمكنك إنشاء جدول وتخزين المعلومات المحددة هناك واحصل على ملف user_id عمود للإشارة إلى users.

class User < ActiveRecord::Base
  has_one :type_1
  has_one :type_2
end

class Type1 < ActiveRecord::Base
  belongs_to :user
end

class Type2 < ActiveRecord::Base
  belongs_to :user
end

الآن هذا ليس جافًا جدًا ويمكن أن يؤدي إلى مشاكل إذا كنت تضيف باستمرار أنواع المستخدمين. لذلك يمكنك النظر في تعدد الأشكال.

من أجل تعدد الأشكال ، users يحدد الجدول نوع المستخدم (profileable_id و profileable_type). لذلك شيء من هذا القبيل:

class User < ActiveRecord::Base
  belongs_to :profileable, :polymorphic => true
end

class Type1 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

class Type2 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

ثم هناك خيار ثالث من STI (ميراث جدول واحد) لأنواع المستخدمين. لكن هذا لا يتوسع بشكل جيد إذا كانت حقول نوع المستخدم تختلف بشكل كبير.

نصائح أخرى

أفضل طريقة رأيتها هنا http://astockwell.com/blog/2014/03/polymorphic-associations-

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top