Si vous êtes nouveau sur Rails et souhaitez faire votre propre validation, arrêtez-vous à ce doigt.

À propos de cet article

Un article gratuit rédigé par des rails débutants pour les rails débutants. Récemment, les enfants de mon ami se sont précipités pour dire "** ouais !!! ouais !!!", alors la validation pour éliminer la douce idée que ** ouais ** serait intéressante. Le but est de faire bon usage et non de répandre des mots vulgaires dans le monde.

environnement

Rails5

Préparation préalable

--Run rails nouveau

Entraine toi

Cette fois, si un contenu contenant un mot (unko) qui ne convient pas à la colonne de contenu du modèle Post est sur le point d'être publié, nous émettrons une erreur de vérification pour protéger le monde de l'amour et de la paix du service et empêcher la propagation de mots sales. ..

Colonnes du tableau des messages

ActiveRecord::Schema.define(version: 2018_06_10_125752) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "posts", force: :cascade do |t|
    t.string "title", null: false
    t.text "content", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "user_id", null: false
    t.index ["user_id"], name: "index_tasks_on_user_id"
  end
end

Maintenant, ajoutons une méthode de validation au modèle Post.

Étape 1

J'enregistrerai la méthode de vérification.

class Ppst < ApplicationRecord
  validate :validate_content_not_including_unko

Hé, n'y a-t-il pas quelque chose d'étrange?

Ceux qui ont étudié les rails dans une certaine mesure ici voudront mettre un tsukkomi. donc! !! !! Non ** valide ** mais ** valide **, qui n'a pas la ** forme de présent singulier à la troisième personne (présent à trois unités) s **! !! !! !! La différence entre les deux semble être soit une validation personnalisée, soit une validation personnelle.

Apparemment, lorsque vous utilisez une validation personnalisée, utilisez ** validate **. .. .. Horrible et difficile à comprendre https://guides.rubyonrails.org/active_record_validations.html#custom-methods

Étape 2

Je vais mettre en œuvre une méthode de vérification

class Ppst < ApplicationRecord
  validate :validate_name_not_including_unko

  private

  def validate_content_not_including_unko
    errors.add(:content, 'Si vous écrivez ceci, vous ne pouvez pas! !! !! !!') if content.include?('merde')
  end
end

①private Cette méthode n'est jamais utilisée de l'extérieur de cet objet, alors écrivez-la sous private

validate_content_not_including_unko Le travail de la méthode de validation est ** "Si vous trouvez une erreur de validation, mettez le contenu de l'erreur dans les erreurs" **. Par conséquent, lorsque content.include? ('Unko') contient unko dans la colonne de contenu, le contenu de l'erreur de vérification est inclus dans errors.add.

Vérifiez si le caca se propage dans le monde.

スクリーンショット 2020-11-13 14.52.28.png

Tu ne diras plus ce mauvais garçon. .. ..

finalement

Il y a une chose que j'ai pensé à travers cet article que cela n'avait rien à voir avec cela.

Au lieu de permettre de publier soudainement en tapant une phrase sur Twitter ou en appuyant sur le bouton de publication, une fois sur l'écran de confirmation, pour faire une pause dans quelque chose comme "Vous dites ou agissez comme si vous étiez séché?" Je me demandais s'il serait possible de réduire le nombre de phrases qui seraient écrites émotionnellement et de répandre une sorte d'effet indésirable.

Aussi, je suis désolé d'avoir eu une série de caca.

Recommended Posts

Si vous êtes nouveau sur Rails et souhaitez faire votre propre validation, arrêtez-vous à ce doigt.
Si vous utilisez Android Room et que vous souhaitez modifier la définition de colonne
Appliquez votre propre domaine à Rails of VPS et rendez-le SSL (https) (CentOS 8.2 / Nginx)
[# 3 Java] Lisez ceci si vous voulez étudier Java! ~ Sélectionné avec soin ~
Si vous voulez créer un fichier zip avec Ruby, c'est rubyzip.
Commandes de base de Rails que vous souhaitez apprendre