Débutant Ruby on Rails Ce que j'ai appris est résumé

Objectif de cet article J'ai résumé ce que j'ai appris en 3 mois environ à l'école de programmation afin de pouvoir l'utiliser dans mes activités de changement de carrière. Ceci est un article de moi uniquement pour moi. Le volume augmentera petit à petit.

Un mot qui a marqué M. Mentor ~ Il y a une différence de niveau pour pouvoir écrire des Rails. ~ ~ RSpec est une technologie indispensable. ~

Perspective de révision de code Il semble être une personne formidable pour les mentors! J'ai résumé les points à vérifier lors de la révision du code de Rails

Haml

gem'haml-rails 'requis. Haml élimine le besoin de fermer les balises et réduit le code. Indentation sévère, mais vous serez en mesure d'écrire du code soigné sans avoir besoin de fermer les balises! Je ressens. Référence: Comment écrire Haml

example.html.haml


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

.haml
  %h1 Hello Haml!

À propos du routage

Transmettez la signification de l'URL L'imbrication des ressources facilite la compréhension de la signification de l'URL. ↓

routes.rb



#Post est le parent, et Comment et Like sont les enfants.
  resources :posts do
    resources :comments, only: [:create, :destroy]
    resources :likes, only: [:show,:create, :destroy]
  end

De plus, vous pouvez apporter deux identifiants à partir de l'URL! ↓

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
#C'est difficile à comprendre, alors faisons-le encore plus

Modèle

Méthode modèle

Faire de la logique utilisée plusieurs fois une méthode modèle, la rendre sèche ↓

example.html.haml



-  - if current_user.id == post.user_id #J'avais un mauvais visage quand je l'ai écrit directement
+  - post.created_user?(current_user) 
    %p vous êtes la personne qui a publié

post.rb


#Définir la méthode du modèle
  def created_user?(user)
    self.user_id == user.id
  end

Contrôleur

Portée

L'appel d'une méthode directement à partir du modèle dans le contrôleur peut facilement conduire à une faille de sécurité. Fondamentalement, l'ensemble de la cible est irrégulier, et il est presque inexistant. ↓

example_controller.rb



def new
  - @post = Post.new  #Un mauvais identifiant peut être entré
  + @post = current_user.posts.build  #current_gamme d'utilisateurs(portée)
end 
#Si vous voulez vraiment utiliser le modèle du capital, vous devez le faire ou mettre votre main sur votre poitrine avant de vous décider.

Before_Action

Faites de la partie commune du contrôleur une méthode privée et conservez-la dans DRY avec before_action ↓

example_controller.rb



before_action :set_post

#réduction
private

def set_post
  @post = current_user.posts.find(params[:id])
end
#Ne grossissez pas le contrôleur, faisons-le mince

Méthode Save, Destroy

Pour des méthodes de sauvegarde et de destruction qui n'échouent presque jamais, à l'exception de facteurs tels que des problèmes de serveur dans l'environnement Internet! ↓

example_controller.rb



  def destroy
    @post.destroy!
    flash[:notice] = "Message supprimé"
    redirect_to posts_path
  end

Utiliser des constantes

Faites-en une constante pour qu'elle soit facile à comprendre pour toute la personne. Définissez une constante dans le modèle et appelez-la dans le contrôleur. ↓

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)
#Nom du modèle::Nom constant

RSpec

À l'origine, écrire un test et écrire une méthode tout en vérifiant les échecs (TDD, développement piloté par les tests)

post_spec.rb



  describe "#created_user?" do
    let(:user) { FactoryBot.create(:user) } #La personne
    let(:other_user) { FactoryBot.create(:user) } #autres
    let(:post) { FactoryBot.create(:post, user: user) } #Publié par la personne
  
    context "Pour le même utilisateur que l'utilisateur connecté" do
      it "Revenir vrai" do
        expect(post.created_user?(user)).to eq true 
      end
    end
    context "Si ce n'est pas le même utilisateur que l'utilisateur connecté" do
      it "Retour faux" do
        expect(post.created_user?(other_user)).to eq false 
      end
    end 
  end

Livre de référence Everyday Rails-Introduction to Rails Testing with RSpec Quoi qu'il en soit, je peux bouger un peu ma main. Personnellement, les tests de spécifications système liés à Ajax sont un traumatisme.

Vidéos recommandées TDD Boot Camp 2020 en ligne # 1 Keynote / Live Coding

Continuer ...

Recommended Posts

Débutant Ruby on Rails Ce que j'ai appris est résumé
Ce que j'ai appris en étudiant les rails
J'ai résumé le flux jusqu'à l'implémentation de simple_calendar dans Ruby on Rails.
Ce que j'ai appris
J'ai fait un portfolio avec Ruby On Rails
Ce que j'ai appris ② ~ Mock ~
Ce que j'ai appris ① ~ DJUnit ~
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby on Rails] J'obtiens un avertissement lors de l'exécution de RSpec car gem'chromedriver-helper 'est obsolète.
Ce qui m'intéressait dans le cours Ruby on Rails de Progate [chaque énoncé de message d'erreur]
J'ai essayé d'installer le plugin lié à Ruby on Rails avec vim-plug
Record d'apprentissage de Ruby on rails -2020.10.03
Qu'est-ce qu'un module Ruby?
Qu'est-ce que Rails Gem Concevoir?
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Ce à quoi j'étais accro en utilisant rspec sur des rails
Record d'apprentissage Ruby on rails-2020.10.07 ②
J'ai essayé Rails débutant [Chapitre 1]
[Ruby] À quoi sert «!!»?
[Ruby] Qu'est-ce qu'une instance?
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
J'ai essayé Rails débutant [Chapitre 2]
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
Ce que j'ai appris sur Kotlin
Qu'est-ce que Rails Active Record?
Depuis que je suis passé de Spring Boot (Java) à Ruby on Rails, j'ai résumé mes points préférés de Rails
Où j'étais intéressé par le cours Ruby on Rails de Progate [params]
Je souhaite ajouter une fonction de navigation avec ruby on rails
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
[Ruby on Rails] Introduction de la fonction de pagination
Progatez Ruby on Rails
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
Ce que j'ai appris avec Java Gold
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Méthode d'aide pratique
Ce que j'ai appris avec Java Silver
Qu'est-ce qu'un tableau bidimensionnel Ruby?
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."