Anfänger Ruby on Rails Was ich gelernt habe, wird zusammengefasst

Zweck dieses Artikels Ich habe zusammengefasst, was ich in ungefähr 3 Monaten an der Programmierschule gelernt habe, damit ich es für meine Aktivitäten zur beruflichen Veränderung nutzen kann. Dies ist ein Artikel von mir nur für mich. Die Lautstärke wird nach und nach erhöht.

Ein Wort, das Herrn Mentor beeindruckt hat ~ Es gibt einen Pegelunterschied, um Rails schreiben zu können. ~ ~ RSpec ist eine unverzichtbare Technologie. ~

Codeüberprüfungsperspektive Er scheint eine großartige Person für Mentoren zu sein! Ich habe die Punkte zusammengefasst, die bei einer Codeüberprüfung von Rails zu überprüfen sind

Haml

gem'haml-schienen 'erforderlich. Haml macht das Schließen von Tags überflüssig und reduziert den Code. Starke Einrückung, aber Sie können ordentlichen Code schreiben, ohne Tags schließen zu müssen! Ich fühle. Referenz: So schreiben Sie Haml

example.html.haml


<div class="haml">
  <h1>Hello Haml!</h1>
</div>

.haml
  %h1 Hello Haml!

Informationen zum Routing

Übergeben Sie die Bedeutung der URL Das Verschachteln von Ressourcen erleichtert das Verständnis der Bedeutung der URL. ↓

routes.rb



#Post ist das Elternteil und Comment and Like sind die Kinder.
  resources :posts do
    resources :comments, only: [:create, :destroy]
    resources :likes, only: [:show,:create, :destroy]
  end

Außerdem können Sie zwei IDs von der URL mitbringen! ↓

post_comments POST     /posts/:post_id/comments(.:format)      comments#create
post_comment  DELETE   /posts/:post_id/comments/:id(.:format)  comments#destroy
post_likes    POST     /posts/:post_id/likes(.:format)         likes#create
post_like     GET      /posts/:post_id/likes/:id(.:format)     likes#show
              DELETE   /posts/:post_id/likes/:id(.:format)     likes#destroy
#Es ist schwer zu verstehen, also machen wir es noch mehr

Modell

Modellmethode

Machen Sie die häufig verwendete Logik zu einer Modellmethode und machen Sie sie TROCKEN ↓

example.html.haml



-  - if current_user.id == post.user_id #Ich hatte ein schlechtes Gesicht, als ich es direkt schrieb
+  - post.created_user?(current_user) 
    %p Sie sind die Person, die gepostet hat

post.rb


#Modellmethode definieren
  def created_user?(user)
    self.user_id == user.id
  end

Controller

Geltungsbereich

Das Aufrufen einer Methode direkt aus dem Modell in der Steuerung kann leicht zu einer Sicherheitslücke führen. Grundsätzlich ist das gesamte Ziel unregelmäßig und fast nicht vorhanden. ↓

example_controller.rb



def new
  - @post = Post.new  #Möglicherweise wurde eine falsche ID eingegeben
  + @post = current_user.posts.build  #current_Benutzerbereich(Umfang)
end 
#Wenn Sie das Kapitalmodell wirklich verwenden möchten, müssen Sie es tun oder Ihre Hand auf Ihre Brust legen, bevor Sie sich entscheiden.

Before_Action

Machen Sie den gemeinsamen Teil im Controller zu einer privaten Methode und halten Sie ihn mit before_action ↓ in DRY

example_controller.rb



before_action :set_post

#Kürzung
private

def set_post
  @post = current_user.posts.find(params[:id])
end
#Machen Sie den Controller nicht fett, machen wir ihn schlank

Speichern, Methode zerstören

Zum Speichern und Zerstören von Methoden, die fast nie fehlschlagen, außer bei Faktoren wie Serverproblemen in der Internetumgebung! ↓

example_controller.rb



  def destroy
    @post.destroy!
    flash[:notice] = "Beitrag gelöscht"
    redirect_to posts_path
  end

Verwenden Sie Konstanten

Machen Sie es zu einer Konstante, damit es für die ganze Person leicht zu verstehen ist. Definieren Sie eine Konstante im Modell und rufen Sie sie in der Steuerung auf. ↓

example_controller.rb



#ex_model.rb
PER_COMMENT = 5

#example_controller.rb
@comments = @post.comments.page(params[:page]).per(Ex_model::PER_COMMENT).order(created_at: :desc)
#Modellname::Konstanter Name

RSpec

Schreiben Sie ursprünglich einen Test und eine Methode, während Sie nach Fehlern suchen (TDD, testgetriebene Entwicklung)

post_spec.rb



  describe "#created_user?" do
    let(:user) { FactoryBot.create(:user) } #Die Person
    let(:other_user) { FactoryBot.create(:user) } #Andere
    let(:post) { FactoryBot.create(:post, user: user) } #Gepostet von der Person
  
    context "Für denselben Benutzer wie der angemeldete Benutzer" do
      it "Rückgabe true" do
        expect(post.created_user?(user)).to eq true 
      end
    end
    context "Wenn nicht derselbe Benutzer wie der angemeldete Benutzer" do
      it "Falsche Rückgabe" do
        expect(post.created_user?(other_user)).to eq false 
      end
    end 
  end

Nachschlagewerk Alltägliche Rails-Einführung in das Testen von Rails mit RSpec Wie auch immer, ich kann meine Hand ein wenig bewegen. Persönlich sind Ajax-bezogene Tests von Systemspezifikationen ein Trauma.

Empfohlene Videos TDD Boot Camp 2020 Online # 1 Keynote / Live Coding

Weiter ...

Recommended Posts

Anfänger Ruby on Rails Was ich gelernt habe, wird zusammengefasst
Was ich aus dem Studium von Rails gelernt habe
Ich habe den Ablauf bis zur Implementierung von simple_calendar in Ruby on Rails zusammengefasst.
Was ich gelernt habe
Ich habe mit Ruby On Rails ein Portfolio erstellt
Was ich gelernt habe ② ~ Mock ~
Was ich gelernt habe ~ ~ DJUnit ~
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby on Rails] Beim Ausführen von RSpec wird eine Warnung angezeigt, da gem'chromedriver-helper 'veraltet ist.
Was mich an Progates Ruby on Rails-Kurs interessiert hat [jede Erklärung der Fehlermeldung]
Ich habe versucht, das Ruby on Rails-Plugin mit vim-plug zu installieren
Ruby on Rails Lernrekord -2020.10.03
Was ist ein Ruby-Modul?
Was ist Rails Gem Devise?
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Wovon ich süchtig war, als ich rspec auf Schienen benutzte
Ruby on Rails lernen Rekord-2020.10.07 ②
Ich habe Rails Anfänger ausprobiert [Kapitel 1]
[Ruby] Wofür wird `!!` verwendet?
[Ruby] Was ist eine Instanz?
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ich habe Rails Anfänger ausprobiert [Kapitel 2]
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
Was ich über Kotlin gelernt habe
Was ist Rails Active Record?
Seit ich von Spring Boot (Java) zu Ruby on Rails gewechselt bin, habe ich meine Lieblingspunkte von Rails zusammengefasst
Wo ich mich für den Ruby on Rails-Kurs von Progate interessierte [params]
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
[Ruby on Rails] Paging-Funktion eingeführt
Progate Ruby on Rails5 Rückblick
Verwendung von Ruby on Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
(Ruby on Rails6) Gepostete Inhalte "löschen"
[Ruby on Rails] CSV-Ausgabefunktion
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Ruby on Rails] Erstellung der Bestätigungsseite
Ruby On Rails entwickelt Routing-Konflikte
[Ruby on Rails] Implementierung der Kommentarfunktion
Was ich mit Java Gold gelernt habe
[Ruby on Rails] DM, Chat-Funktion
[Ruby on Rails] Praktische Hilfsmethode
Was ich mit Java Silver gelernt habe
Was ist ein zweidimensionales Ruby-Array?
[Ruby on Rails] Stoppen Sie "Looping bis ..."