Ruby on Rails6 Guide pratique cp10 ~ cp12 [Memo]

introduction

L'auteur de cet article est un débutant qui commence à peine à apprendre la programmation. Je vous serais reconnaissant si vous pouviez signaler des erreurs.

Aperçu

Cet article est un mémo personnel de ce que j'ai appris en lisant le Guide pratique de Ruby on Rails 6. Il semble difficile à lire car il est extrait et repris. Excusez-moi. Ce livre a également une suite Extension, et les deux ont été étudiés au stade de la rédaction de l'article. J'écrirai également un article pour examen. Puisqu'il est divisé en 18 chapitres, nous le diviserons par titre.

Article précédent Guide pratique Ruby on Rails6 cp4 ~ cp6 [Memo] Guide pratique Ruby on Rails6 cp7 ~ cp9 [Memo]

Chapitre 10 Afficher, créer, mettre à jour, supprimer des enregistrements

try

Cette méthode renvoie nil si le receveur est nul, sinon exécute la méthode avec le nom spécifié dans le premier argument. Le deuxième argument et les suivants sont des arguments de méthode.

user.try(:name=, "foo")

Dans l'exemple ci-dessus, si l'utilisateur n'est pas nul, nom = sera exécuté avec l'utilisateur comme récepteur.


Spécifiez l'URL dans le tableau

  def show
    staff_member = StaffMember.new(params[:id])
    redirect_to [ :edit, :admin, staff_member ]
  end

Vous pouvez spécifier l'URL dans un tableau comme décrit ci-dessus. Le nom de routage est déduit des éléments du tableau et le chemin de l'URL est généré. Dans l'exemple ci-dessus, Rails suppose que le nom de routage est edit_admin_staff_member et dérive l'URL / admin / staff_member /: id / edit.


after(css)

label.require:after {
  content: "*";
  padding-left: 6px;
  color: $red;
}

Si: after est ajouté après le sélecteur css, l'élément spécifié dans content sera ajouté après l'élément. Dans l'exemple ci-dessus, un astérisque sera ajouté après l'élément lebel de la classe require.

Chapter 11 Strong Parameters

Vulnérabilité des affectations de masse

Avec une connaissance rudimentaire de la programmation, vous pouvez réécrire des attributs qui ne devraient pas être librement réécrits. Cette vulnérabilité est appelée une vulnérabilité d'attribution de masse </ strong>. Strong Parameters </ strong> est une contre-mesure introduite dans Rails 4.0 contre cette vulnérabilité.


Strong Parameters

params.require(:login_form).permit(:email, :password)

params est une méthode qui renvoie un objet params. L'appel de la méthode require vérifie si l'objet params a une clé appelée: login_form. Si vous ne l'avez pas, vous obtiendrez l'exception ActionController :: ParameterMissing. L'appel de la méthode permit sur la valeur de retour de la méthode require supprime les paramètres non spécifiés dans l'argument.


Paramètres FactroyBot

spec/rails_helper.rb


#réduction
RSpec.configure do |config|
  #réduction
  config.include FactroyBot::Syntax::Methods
end

Si vous essayez d'appeler FactroyBot sans les paramètres ci-dessus,

user = FactroyBot.create(name: "foo")

Vous devez l'appeler comme En ajoutant le paramètre, vous pouvez omettre FactroyBot comme indiqué ci-dessous.

user = create(name: "foo")

Chapitre 12 Contrôle d'accès

skip_before_action La méthode de classe skip_before_action empêche la méthode spécifiée dans l'argument d'être exécutée avant l'action.

skip_before_action :authorize

Il peut être utilisé lorsque vous souhaitez ignorer l'action before_action spécifiée dans la classe parent.


Exemple partagé

shared_examples

shared_examples "a protected admin controller" do |controller|
  let(:args) do
    {
      host: Rails.application.config.baukis2[:admin][:host],
      controller: controller
    }
  end

  describe "#index" do
    example "Redirection vers le formulaire de connexion" do
       get url_for(args.merge(action: :index))
       expect(response).to redirect_to admin_login_url
    end
  end
end

La méthode shared_examples vous permet de réutiliser le même exemple dans plusieurs fichiers de spécifications. Dans l'exemple ci-dessus, l'action d'index dont le contrôleur n'est pas spécifié, elle peut donc être partagée par plusieurs fichiers.

Exemple d'utilisation </ strong>

describe "Gestion du personnel par manager", "Avant la connexion" do
  include_examples "a protected admin controller", "admin/staff_member"
end

include_examples spécifie le nom de shared_examples dans le premier argument. Le deuxième argument et les suivants sont pris comme arguments de bloc. Dans l'exemple ci-dessus, le contrôleur est spécifié.

Deuxième argument de décrire

Dans l'exemple ci-dessus, describe a un deuxième argument. Cela représente le contexte. Il peut être réécrit comme ci-dessous.

describe "Gestion du personnel par manager" do
  context "Avant la connexion" do
    include_examples "a protected admin controller", "admin/staff_member"
  end
end

travel_to

La méthode travel_to d'ActiveSupport :: Testing :: TimeHelpers déplace l'heure actuelle vers le point spécifié dans le temps.

Pour inclure ActiveSupport :: Testing :: TimeHelpers dans RSpec, vous devez l'inclure avec rails_helper.

spec/rails_helper.rb


#réduction
RSpec.configure do |config|
  #réduction
  config.include ActiveSupport::Testing::TimeHelpers
end
travel_to 60.minutes.from_now

Dans l'exemple ci-dessus, l'heure actuelle est avancée de 60 minutes.

travel_back 60.minutes.ago

Vous pouvez également utiliser travel_back pour reculer de 60 minutes l'heure actuelle.

A continué

Nous ajouterons les URL des articles suivants un par un.

Guide pratique Ruby on Rails6 cp13 ~ cp15 [Memo] Guide pratique Ruby on Rails6 cp16 ~ cp18 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp3 ~ cp6 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp7 ~ cp9 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp10 ~ cp12 [Memo]

Source du devis

Recommended Posts