Comment vérifier si un modèle a une certaine colonne / atsortingbut?

J’ai une méthode qui doit parcourir un hachage et vérifier si chaque clé existe dans une table de modèles, sinon elle supprimera la clé / valeur.

par exemple

number_hash = { :one => "one", :two => "two" } 

et la table Number ne comporte qu’une: une colonne: deux seront supprimées.

Comment vérifier si un modèle a un atsortingbut ou non?

Pour un cours

Utilisez Class.column_names.include? attr_name Class.column_names.include? attr_nameattr_name est le nom de chaîne de votre atsortingbut.

Dans ce cas: Number.column_names.include? 'one' Number.column_names.include? 'one'

Pour une instance

Utilisez record.has_atsortingbute?(:attr_name) ou record.has_atsortingbute?('attr_name') (Rails 3.2+) ou record.atsortingbutes.has_key? attr_name record.atsortingbutes.has_key? attr_name

Dans ce cas: number.has_atsortingbute?(:one) ou number.has_atsortingbute?('one') ou number.atsortingbutes.has_key? 'one' number.atsortingbutes.has_key? 'one'

Si vous devez également rechercher des alias, vous pouvez utiliser Number.method_defined? attr_name Number.method_defined? attr_name ou number.class.method_defined? attr_name number.class.method_defined? attr_name

Je devais le faire pour un object Mongoid qui avait des champs aliasés.

Dans votre object d’instance, vous pouvez également utiliser defined? instance.atsortingbute defined? instance.atsortingbute ou instance.respond_to? :atsortingbute instance.respond_to? :atsortingbute
Ce sont des solutions plus génériques pour vérifier un atsortingbut de modèle ou toute autre méthode.