tutorial software rails ejemplos descargar curso caracteristicas ruby-on-rails

ruby-on-rails - software - ruby on rails tutorial



¿Cómo verificar si un modelo tiene una determinada columna/atributo? (3)

En su objeto de instancia, ¿podría usar también defined? instance.attribute defined? instance.attribute o instance.respond_to? :attribute instance.respond_to? :attribute .
Estas son una solución más genérica para verificar un atributo del modelo o cualquier otro método.

Tengo un método que necesita recorrer un hash y verificar si cada clave existe en una tabla de modelos, de lo contrario eliminará la clave / valor.

por ejemplo

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

y la tabla de números solo tiene una: una columna, por lo que se eliminarán dos.

¿Cómo puedo verificar si un modelo tiene un atributo o no?


Si necesita verificar también los alias, puede usar Number.method_defined? attr_name Number.method_defined? attr_name o number.class.method_defined? attr_name number.class.method_defined? attr_name

Tuve que hacer esto para un objeto Mongoid que tenía campos alias.


Para una clase

Use Class.column_names.include? attr_name Class.column_names.include? attr_name donde attr_name es el nombre de la cadena de tu atributo.

En este caso: Number.column_names.include? ''one'' Number.column_names.include? ''one''

Por una instancia

Use record.has_attribute?(:attr_name) o record.has_attribute?(''attr_name'') (Rails 3.2+) o record.attributes.has_key? attr_name record.attributes.has_key? attr_name

En este caso: number.has_attribute?(:one) number.has_attribute?(''one'') number.has_attribute?(:one) o number.has_attribute?(''one'') number.attributes.has_key? ''one'' number.has_attribute?(''one'') o number.attributes.has_key? ''one'' number.attributes.has_key? ''one''