Ruby on Rails6 Praktischer Leitfaden cp10 ~ cp12 [Memo]

Einführung

Der Autor dieses Artikels ist ein Anfänger, der gerade erst anfängt, Programmieren zu lernen. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.

Überblick

Dieser Artikel ist eine persönliche Notiz von dem, was ich durch Lesen des Ruby on Rails 6 Practical Guide gelernt habe. Es scheint schwer zu lesen zu sein, da es auszugsweise und aufgegriffen ist. Entschuldigung. Dieses Buch hat auch eine Fortsetzung Erweiterung, und beide wurden zum Zeitpunkt des Schreibens des Artikels untersucht. Ich werde auch einen Artikel zur Überprüfung schreiben. Da es in 18 Kapitel unterteilt ist, werden wir es nach Überschriften unterteilen.

Vorheriger Artikel Ruby on Rails6 - Praktischer Leitfaden cp4 ~ cp6 [Memo] Ruby on Rails6 - Praktischer Leitfaden cp7 ~ cp9 [Memo]

Kapitel 10 Anzeigen, Erstellen, Aktualisieren und Löschen von Datensätzen

try

Diese Methode gibt nil zurück, wenn der Empfänger nil ist. Andernfalls wird die Methode mit dem im ersten Argument angegebenen Namen ausgeführt. Das zweite und nachfolgende Argument sind Methodenargumente.

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

Wenn der Benutzer im obigen Beispiel nicht Null ist, wird name = mit dem Benutzer als Empfänger ausgeführt.


Geben Sie die URL im Array an

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

Sie können die URL in einem Array wie oben beschrieben angeben. Der Routing-Name wird aus den Elementen des Arrays abgeleitet und der URL-Pfad generiert. Im obigen Beispiel geht Rails davon aus, dass der Routing-Name edit_admin_staff_member lautet, und leitet die URL / admin / staff_member /: id / edit ab.


after(css)

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

Wenn: after nach dem CSS-Selektor hinzugefügt wird, wird das im Inhalt angegebene Element nach dem Element hinzugefügt. Im obigen Beispiel wird nach dem lebel-Element der require-Klasse ein Sternchen hinzugefügt.

Chapter 11 Strong Parameters

Sicherheitslücke bei Massenzuweisungen

Mit rudimentären Programmierkenntnissen können Sie Attribute umschreiben, die nicht frei umgeschrieben werden sollten. Diese Sicherheitsanfälligkeit wird als Sicherheitsanfälligkeit für Massenzuweisungen </ strong> bezeichnet. Starke Parameter </ strong> ist eine in Rails 4.0 eingeführte Gegenmaßnahme gegen diese Sicherheitsanfälligkeit.


Strong Parameters

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

params ist eine Methode, die ein params-Objekt zurückgibt. Durch Aufrufen der Methode require wird überprüft, ob das params-Objekt einen Schlüssel mit dem Namen login_form hat. Wenn Sie es nicht haben, erhalten Sie die Ausnahme ActionController :: ParameterMissing. Durch Aufrufen der allow-Methode für den Rückgabewert der require-Methode werden die im Argument nicht angegebenen Parameter entfernt.


FactroyBot-Einstellungen

spec/rails_helper.rb


#Kürzung
RSpec.configure do |config|
  #Kürzung
  config.include FactroyBot::Syntax::Methods
end

Wenn Sie versuchen, FactroyBot ohne die obigen Einstellungen aufzurufen,

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

Sie müssen es so nennen Durch Hinzufügen der Einstellung können Sie FactroyBot wie unten gezeigt weglassen.

user = create(name: "foo")

Kapitel 12 Zugriffskontrolle

skip_before_action Die Klassenmethode skip_before_action verhindert, dass die im Argument angegebene Methode vor der Aktion ausgeführt wird.

skip_before_action :authorize

Es kann verwendet werden, wenn Sie die in der übergeordneten Klasse angegebene before_action überspringen möchten.


Geteiltes Beispiel

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 "Weiterleiten zum Anmeldeformular" do
       get url_for(args.merge(action: :index))
       expect(response).to redirect_to admin_login_url
    end
  end
end

Mit der Methode shared_examples können Sie dasselbe Beispiel in mehreren Spezifikationsdateien wiederverwenden. Im obigen Beispiel wird die Indexaktion angegeben, deren Controller nicht angegeben ist, sodass sie von mehreren Dateien gemeinsam genutzt werden kann.

Verwendungsbeispiel </ strong>

describe "Personalmanagement durch Manager", "Vor dem Login" do
  include_examples "a protected admin controller", "admin/staff_member"
end

include_examples gibt den Namen von shared_examples im ersten Argument an. Das zweite und die nachfolgenden Argumente werden als Blockargumente verwendet. Im obigen Beispiel wird die Steuerung angegeben.

Zweites Argument der Beschreibung

Im obigen Beispiel hat description ein zweites Argument. Dies repräsentiert den Kontext. Es kann wie folgt umgeschrieben werden.

describe "Personalmanagement durch Manager" do
  context "Vor dem Login" do
    include_examples "a protected admin controller", "admin/staff_member"
  end
end

travel_to

Die travel_to-Methode von ActiveSupport :: Testing :: TimeHelpers verschiebt die aktuelle Zeit zum angegebenen Zeitpunkt.

Um ActiveSupport :: Testing :: TimeHelpers in RSpec aufzunehmen, müssen Sie es in rails_helper aufnehmen.

spec/rails_helper.rb


#Kürzung
RSpec.configure do |config|
  #Kürzung
  config.include ActiveSupport::Testing::TimeHelpers
end
travel_to 60.minutes.from_now

Im obigen Beispiel wird die aktuelle Zeit um 60 Minuten vorverlegt.

travel_back 60.minutes.ago

Sie können travel_back auch verwenden, um die aktuelle Zeit um 60 Minuten zurückzuschieben.

Fortsetzung

Wir werden die URLs der folgenden Artikel einzeln hinzufügen.

Ruby on Rails6 - Praktischer Leitfaden cp13 ~ cp15 [Memo] Ruby on Rails6 - Praktischer Leitfaden cp16 ~ cp18 [Memo] Ruby on Rails6 - Praktischer Leitfaden [Erweiterungen] cp3 ~ cp6 [Memo] Ruby on Rails6 - Praktisches Handbuch [Funktionserweiterung] cp7 ~ cp9 [Memo] Ruby on Rails6 - Praktischer Leitfaden [Erweiterungen] cp10 ~ cp12 [Memo]

Quelle zitieren

Recommended Posts