[RUBY] Rails6 OmniAuth activestorage Obtenir l'image de l'utilisateur

Une note pour vous-même par un éternel débutant. L'apprentissage des rails a commencé 3 mois. Pour le moment, j'apprécierais que vous réfléchissiez à son fonctionnement. Si vous pensez qu'une telle personne est bien, je vous serais reconnaissant de bien vouloir me faire un commentaire aimable.

Objectif de cet article

Enregistrez l'image de profil de l'utilisateur dans le stockage actif. Même lorsque j'ai cherché sur Google, je n'ai pas vu beaucoup d'articles sur le stockage actif avec uniquement des ondes porteuses, alors je l'ai posté en espérant qu'il y aurait des gens dans la même situation.

Environnement Ruby 2.7.1p83 Rails 6.0.3.3

Prérequis

La fonction de connexion par appareil a été implémentée.

OmniAuth a déjà implémenté des fonctions d'authentification de connexion pour Twitter, google, facebook, etc.

J'ai fait référence à l'article suivant ・ Lié à la procédure https://qiita.com/kazuooooo/items/47e7d426cbb33355590e ・ Introduction d'OmniAuth https://qiita.com/LuckHackMahiro/items/9dfca6e67777a2161240

Référence ・ Comment enregistrer l'URL de l'image dans le stockage actif https://qiita.com/gomasio1010/items/09c6ee58ed4c95f109ff

C'était très utile! Merci beaucoup.

Enregistrer l'url de l'image dans le stockage actif En supposant que la fonction peut être implémentée

app/models/user.rb

require "open-uri"  #ici
class User < ApplicationRecord

  #réduction

  def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.password = Devise.friendly_token[0, 20]
      user.email = auth.info.email    
      user.email = User.dummy_email(auth) if user.provider == "twitter" 
      avatar = open("#{auth.info.image}") #ici
      user.image.attach(io: avatar, filename: "user_avatar.jpg ") #ici
    end
  end

 #réduction

end

J'ai pu obtenir l'image en me référant à l'article. Je n'ai pas vu beaucoup d'articles sur le stockage actif, donc c'était très utile.

Selon la rumeur, l'image serait petite et rugueuse, alors j'ai essayé de lui donner l'impression qu'elle serait plus grande. Certains l'ont spécifié du côté du modèle en regardant diverses choses.

config/initializers/devise.rb

  config.omniauth :facebook, ENV['FACEBOOK_ID'], ENV['FACEBOOK_SECRET_KEY'], :image_size => 'large'#cette
  config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
  config.omniauth :twitter, ENV['TWITTER_API_KEY'], ENV['TWITTER_API_SECRET_KEY'], callback_url: "http://localhost:3000/users/auth/twitter/callback", :image_size => 'original'#cette

La mise en œuvre liée à l'authentification de connexion peut ne pas fonctionner correctement selon l'heure de la journée, ou elle peut ne pas fonctionner correctement si les cookies restent dans le navigateur, il semble donc bon de le faire patiemment.

Recommended Posts

Rails6 OmniAuth activestorage Obtenir l'image de l'utilisateur
[Rails] Implémenter la fonction de recherche d'utilisateurs
Poteaux Rails et liaison utilisateur
Rails Active_storage -Simplifier l'enregistrement des images-
L'image des rails glisse automatiquement [Swiper]
[Rails] Implémenter la fonction de publication d'images
[Rails] [ActiveStorage] Découvrez si un utilisateur particulier possède un avatar