Question

Existe-t-il un moyen d'obtenir une liste des modèles auxquels un modèle particulier appartient dans Rails?

Par exemple:

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

J'espère que cela a du sens!

Était-ce utile?

La solution

Ceci vous donnera un hachage d'objets décrivant les associations et autres choses sur un modèle donné Model.reflections. Vous voulez que toutes les valeurs dans le hachage soient des Reflection::AssociationReflection classes. Ce code devrait vous donner le tableau que vous voulez:

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

Autres conseils

Vous pouvez utiliser un tableau pour définir les associations et l'utiliser dans les validations telles que:

BELONGS_TO_LIST = w%{ project task }
BELONGS_TO_LIST.each {|b| belongs_to b}
validates_inclusion_of :status_of, :in => BELONGS_TO_LIST
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top