Comment vérifier si le modèle a un certain column/attribute?

J'ai une méthode qui devrait trier hash et vérifiez s'il y a toutes les touches de la table des modèles, sinon elle supprimera key/value.

par exemple


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


Et dans les numéros de table, il n'y a qu'une colonne, donc: deux sera supprimée.

Comment vérifier si le modèle a un attribut ou non?
Invité:

Emmanuel

Confirmation de:

Pour la classe

Utilisation
Class.column_names.include? attr_name

, Où
attr_name

String votre attribut.

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


Par exemple

Utilisation
record.has_attribute?/:attr_name/

ou
record.has_attribute?/'attr_name'/

/Rails 3.2+/ ou
record.attributes.has_key? attr_name

.

Dans ce cas:
number.has_attribute?/:one/

ou
number.has_attribute?/'one'/

ou
number.attributes.has_key? 'one'

Eugene

Confirmation de:

Si vous devez également vérifier la disponibilité des alias, vous pouvez utiliser
Number.method_defined? attr_name

ou
number.class.method_defined? attr_name

.

Je devais le faire pour l'objet Mongoid, qui avaient des pseudonymes de champs.

Gilles

Confirmation de:

Dans votre objet d'instance, vous pouvez également utiliser
defined? instance.attribute

ou
instance.respond_to? :attribute

.

Il s'agit d'une solution plus universelle pour vérifier l'attribut d'un modèle ou de toute autre méthode.

Pour répondre aux questions, connectez-vous ou registre