J'ai commencé ma première application Rails l'automne dernier et j'ai dû la mettre sur l'étagère pendant quelques mois en payant le travail absorbé tout le temps. Je suis maintenant intéressé à revenir au projet et à lire le code pour savoir où je me suis arrêté. Le fait que Rails crée dynamiquement des attributs de modèle à l'exécution économise beaucoup de typage répétitif, mais je trouve difficile de découvrir facilement quels attributs/propriétés existent sur toutes mes classes de modèles puisqu'elles ne sont pas explicitement définies dans ma classe des dossiers. Pour découvrir les attributs du modèle, je garde le fichier schema.rb ouvert et je le retourne et quel que soit le code que j'écris qui utilise les propriétés d'un modèle. Cela fonctionne mais est maladroit parce que je dois lire le fichier de schéma pour ramasser des attributs, le fichier de classe de modèle pour prendre des méthodes, et tout nouveau code que j'écris pour appeler les attributs & méthodes. Donc, ma question est, comment pouvez-vous découvrir les propriétés du modèle lorsque vous analysez une base de code Rails pour la première fois? Gardez-vous le fichier schema.rb ouvert tout le temps, ou y a-t-il un meilleur moyen qui ne consiste pas à sauter entre le fichier de schéma & fichier de modèle en permanence?Comment découvrir les attributs du modèle dans Rails
Répondre
pour le schéma des choses liées
Model.column_names
Model.columns_hash
Model.columns
Pour les variables d'instance/attributs dans un objet AR
object.attribute_names
object.attribute_present?
object.attributes
Pour les méthodes d'instance sans héritage de classe super
Model.instance_methods(false)
Pour obtenir les associations aussi, vous pouvez faire: Model.reflect_on_all_associations.map (&: name) – Filippos
Dans ActiveRecord 5 (et probablement plus tôt), vous pouvez appeler 'Model.attribute_names' – aceofbassgreg
some_instance.attributes
Source: blog
some_class.attributes.clés est un peu plus propre – klochner
se demander si tous les IDE utilisent cela pour l'auto-complétion? On dirait une chose évidente à faire pour un modèle de rails. Je suis toujours déçu quand je commence à taper un nom d'attribut et qu'il ne se termine pas automatiquement. – frankodwyer
Puisque 'attributes' est une méthode d'instance, l'exemple de code correct indiquerait' some_instance.attributes'. – RocketR
Il y a un rails plugin appelé modèles annoter, qui va générer votre modèle attribue au-dessus de vos fichiers de modèle voici le lien:
https://github.com/ctran/annotate_models
pour que l'annotation reste synchronisée, vous pouvez écrire une tâche pour générer à nouveau des modèles d'annotation après chaque déploiement.
Nouveau site pour ce que je suppose est le même plugin, https://github.com/ctran/annotate_models –
Si vous êtes juste intéressé par les propriétés et les types de données de la base de données, vous pouvez utiliser 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)"
Vous pouvez également avoir couru rake db:create
et rake db:migrate
pour votre environnement de développement, le fichier db/schema.rb
contiendra la source faisant autorité pour la structure de votre base de données:
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
Pour décrire le modèle que j'utilise suivant extrait
Model.columns.collect { |c| "#{c.name} (#{c.type})" }
Encore une fois c'est si vous cherchez joli imprimé pour vous décrire ActiveRecord
sans que vous n'effectuiez des migrations ou des sauts de ce développeur avant que vous ne soyez assez gentil pour commenter les attributs.
Ceci est parfait pour imprimer tous les attributs de toutes les instances pour un modèle particulier - merci! – ConorB
- 1. Réglage paresseux des attributs du modèle dans Rails?
- 2. Problème de sauvegarde du modèle dans Rails
- 3. Attributs traduits dans les messages d'erreur Rails (Rails 2.3.2, I18N)
- 4. Accès aux propriétés du modèle dans Rails
- 5. Comment tester un modèle de rails qui accepte les attributs imbriqués avec le concombre
- 6. Warehouse Attributs modèle
- 7. Modèle récursif dans Rails
- 8. Copier des instances de modèle dans Rails
- 9. Traduction du modèle avec Globalize2 (rails)
- 10. Rails 2.3 attributs imbriqués problème
- 11. Comment simulez-vous les params lors du test du setter d'un modèle Rails?
- 12. Remplir une sélection avec les données du modèle dans les rails
- 13. rails modèle de session
- 14. Comment fonctionnent les champs du modèle Django?
- 15. Valeur du nombre d'enregistrements qui appartiennent à un autre modèle dans les rails
- 16. Validation des relations de modèle dans les rails
- 17. Modèle d'une table existante dans Rails 2
- 18. Réutilisation du modèle dans plusieurs applications
- 19. Journalisation SQL spécifique au modèle dans les rails
- 20. Rails: méthode d'appel dans le modèle
- 21. Rails Dynamic Multi Model Attributs de formulaire
- 22. Spécification du modèle dans le contrôleur?
- 23. Comment protéger un attribut de modèle Rails?
- 24. Spécification du type de classe d'héritage dans les Rails Formulaire
- 25. Rails Test & Mocha: Comment talonner un modèle spécifique - conditionnel any_instance?
- 26. rails: comment lier les valeurs dans les migrations de données aux variables de classe/modèle?
- 27. Rails classés par dans le modèle associé
- 28. Comment Auto Découvrir un service WCF?
- 29. Comment faire pour form.select retourner un modèle dans Rails?
- 30. Comment utiliser les balises ASP.NET <% = dans les attributs de contrôle du serveur?
Merci pour les réponses ci-dessous. Il semble qu'il n'y ait pas de bon moyen de déclarer les noms d'attribut dans le fichier source du modèle, mais plutôt de garder un terminal ouvert et de rechercher les propriétés dans les objets. – gbc