Assurer l’intégrité des données avec Ruby on Rails
Alors que vous pouvez toujours corriger un bug, vous ne pouvez pas toujours récupérer des données incohérentes.
Voici donc certaines pratiques et techniques recommandé pour éviter des données incohérentes qui pourrait compromettre vos base de donnée
- Utiliser les fonctions de base de données SQLLes bases de données SQL offre des fonctions simples pour assurer l’intégrité des données. Par exemple si vous interdisé les valeurs null sur certain champs critique, vous vous assurer qu’aucune donnée incomplete ne sera écrire.
create_table :users do |t| t.string :email, null: false end
Index unique“Donc, ce gars-là a deux comptes avec la même adresse email?”Ajouter un index avec des contraintes uniques sur des attributs.
add_index :users, [:email], unique: true
Transactions
Mise à jour de plusieurs enregistrements dependant les uns des autres ? Emballer le tout dans une transaction SQL. Si quelque chose va mal, les changements sont annulés et la base de données est restaurée à un état cohérent.
Account.transaction do from_account.debit!(amount) to_account.credit!(amount) end
Verrouillage
Utilisez de verrouillage lorsque vous souhaitez empêcher un enregistrement d’être mis à jour par les autres quand vous l’utilisez.
task = InvoicingTask.lock(true).first task.perform!
Clés étrangères
Les clés étrangères vous aidera à prévenir les enregistrements orphelins et les relations manquantes. J’utilise la gem Foreigner pour ajouter automatiquement les clé étrangère a ma DB (attention les tables doivent etre en innoDB pour mysql, et surtout pas myIsam).
- Utilisez plus de validations dans vos modèle ActiveRecord
Les validations sont principalement utilisés pour vérifier les entrées utilisateurs. J’utilise aussi les essais en direct afin d’assurer l’intégrité des données.validates :methode_personnel_de_validation
Des selects un peu plus agréable a voir
Monté une page de formulaire de qualité, est une chose simple avec html5 / css3. Cependant, dès que le formulaire introduit un select, les choses se compliques.
Personnalisé le visuel des selects, peut alors rapidement devenir un vrai casse tete. Heureusement aujourd’hui il existe librairie JS qui permette de faire cela tres facilement. Chosen est l’un de ces librairies JS.
Chosen permet accepte les select avec les options de groupe (optgroup), select multiple. Il permet aussi d’afficher un placeholder. La gestion des événements est aussi supporté
Chosen fonctionne aussi bien sur jquery, Prototype ou MooTools.
Pour les programmeurs rails, il existe une gem qui permet d’intégrer très facilement chosen dans n’importe lequel de vos projets existant: https://github.com/tsechingho/chosen-rails
L’importance d’un contenu unique
Lors de récents articles il a été question de l’importance d’un contenu qualitatif sur les pages de votre site. Bien qu’elle soit non-négligeable, la qualité des textes (un texte bien rédigé peut s’avérer non qualitatif s’il est simplement copié et collé sur votre site) n’est pas l’unique critère à considérer dans l’élaboration de vos informations.
Effectivement, un bon référenceur vous dira d’éviter la duplication de contenu et de toujours privilégier des textes uniques. Pour que votre site se démarque de sa concurrence, vous devrez être créatif dans la rédaction de vos textes et offrir des informations que les utilisateurs n’auront pas lu ailleurs dans leur intégralité.
Plusieurs croient à tort que l’esthétisme d’un site peut suffire à le hisser au sommet des classements auprès de Google. Il n’en n’est rien…Certes il est agréable que le visuel d’un site soient joli mais Google ne focalise pas sur cet aspect et détient des outils performants pour détecter les contenus que vous copiez ailleurs et collez sur vos pages (duplicate content). Toute entreprise qui démarre et voulant atteindre la prospérité devrait être érigée par une personne soucieuse de faire les choses adéquatement et ce, même si cela requiert efforts et temps supplémentaire!
Tenez-vous le pour dit, plus vous mettrez d’assiduité à la tâche de rédaction, plus vous récolterez les résultats le moment venu.
Par: Julie Brunet