rails eliminar comando columna ruby-on-rails activerecord

ruby on rails - eliminar - ¿Cómo descubres los atributos del modelo en Rails?



comando rake db migrate (5)

Comencé mi primera aplicación Rails el otoño pasado y tuve que ponerla en el estante durante unos meses cuando pagar el trabajo me consumía todo el tiempo. Ahora estoy interesado en volver al proyecto y leer el código para descubrir dónde lo dejé.

El hecho de que Rails crea dinámicamente atributos de modelo en el tiempo de ejecución ahorra mucho tipeo repetitivo, pero me resulta difícil descubrir qué atributos / propiedades existen en todas mis clases de modelos, ya que no están explícitamente definidos en mis archivos de clase. Para descubrir los atributos del modelo, mantengo el archivo schema.rb abierto y giro entre él y el código que estoy escribiendo que usa las propiedades de un modelo. Esto funciona, pero es torpe porque tengo que leer el archivo de esquema para recoger los atributos, el archivo de clase de modelo para recoger los métodos y el nuevo código que estoy escribiendo para llamar a los atributos y métodos.

Entonces mi pregunta es, ¿cómo descubres las propiedades 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?


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.


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)


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.


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


some_instance.attributes

Fuente: blog