سؤال

هل هناك طريقة يمكنني الحصول على قائمة من النماذج التي نموذج معين ينتمي إليها في القضبان؟

وعلى سبيل المثال:

class Project < ActiveRecord::Base
  has_one :status
  ...
end

class Task < ActiveRecord::Base
  has_one :status
  ...
end

class Status < ActiveRecord::Base
  belongs_to :project
  belongs_to :task

  # this is where I want to be able to pass in an array of the associations' class
  # names (to be used for checking input) rather than having to do w%{ project task } 
  # which leaves it open to failure if I add new associations in future
  validates_inclusion_of :status_of, :in => ?
  ...
end

وهذا الأمل يجعل نوعا من الشعور!

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

المحلول

وهذا سوف تحصل على تجزئة الأجسام واصفا الجمعيات وغيرها من الامور على Model.reflections نموذج معين. تريد كل القيم في البعثرة التي هي الطبقات Reflection::AssociationReflection. هذا الرمز يجب أن تحصل على مجموعة تريد:

association_names = []
Model.reflections.each { |key, value| association_names << key if value.instance_of?(ActiveRecord::Reflection::AssociationReflection) }

نصائح أخرى

ويمكنك استخدام مجموعة واحدة لتحديد الجمعيات واستخدامها في التحقق من صحة مثل:

BELONGS_TO_LIST = w%{ project task }
BELONGS_TO_LIST.each {|b| belongs_to b}
validates_inclusion_of :status_of, :in => BELONGS_TO_LIST
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top