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