¿Cómo descubres los atributos del modelo en Rails?

Me resulta difícil ver qué atributos / propiedades existen en todas mis clases de modelos, ya que no están explícitamente definidas en mis archivos de clase.

Para descubrir los atributos del modelo, mantengo el archivo schema.rb abierto y cambio entre él y el código que estoy escribiendo según sea necesario. Esto funciona, pero es torpe porque tengo que cambiar entre leer el archivo de esquema para recoger los atributos, el archivo de clase de modelo para verificar los métodos y cualquier código nuevo que estoy escribiendo para llamar a los atributos y métodos.

Mi pregunta es, ¿cómo descubres los atributos del modelo cuando estás analizando una base de código de Rails por primera vez? ¿Mantiene el archivo schema.rb abierto todo el tiempo, o hay una forma mejor que no implica saltar constantemente entre el archivo de esquema y el archivo de modelo?

Para cosas relacionadas con Schema

Model.column_names Model.columns_hash Model.columns 

Por ejemplo, variables / atributos en un objeto AR

 object.attribute_names object.attribute_present? object.attributes 

Por ejemplo, métodos sin herencia de superclase

 Model.instance_methods(false) 

Hay un complemento de raíles llamado Annotate models, que generará los atributos de su modelo en la parte superior de los archivos de su modelo, aquí está el enlace:

https://github.com/ctran/annotate_models

para mantener la anotación sincronizada, puede escribir una tarea para volver a generar modelos de anotación después de cada implementación.

Si solo está interesado en las propiedades y tipos de datos de la base de datos, puede usar Model.inspect .

 irb(main):001:0> User.inspect => "User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime)" 

Alternativamente, después de ejecutar rake db:create y rake db:migrate para su entorno de desarrollo, el archivo db/schema.rb contendrá la fuente autorizada para su estructura de base de datos:

 ActiveRecord::Schema.define(version: 20130712162401) do create_table "users", force: true do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0 t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.datetime "created_at" t.datetime "updated_at" end end 

Para describir el modelo, utilizo el siguiente fragmento

 Model.columns.collect { |c| "#{c.name} (#{c.type})" } 

De nuevo, esto es si está buscando imprimir bastante para describir ActiveRecord sin tener que pasar por migraciones o saltar a ese desarrollador antes de que fuera lo suficientemente agradable como para comentar los atributos.

 some_instance.attributes 

Fuente: blog