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.
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]
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.
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
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.
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")
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.
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é.
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.
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]
Recommended Posts