[RUBY] [rails6.0.0] Speichern von Bildern mit Active Storage im Assistentenformat

Überblick

Erstellen Sie bei der Registrierung und beim Profilieren ein Formular im Assistentenformat. Ich wollte das Bild in meinem Profil speichern, aber es hat nicht funktioniert, deshalb habe ich es als Memorandum geschrieben.

Was ist das Assistentenformat? Diejenigen, die sagen siehe hier

Inhalt

Entwicklungsumgebung

MacOS Catalina 10.15.6 Rails 6.0.0 Ruby 2.6.5

Tabellenstruktur

Ich versuche, mich mit devise als Benutzer zu registrieren. Der Benutzertabelle wird nur der Spitzname hinzugefügt. Die Profiltabelle enthält einen Twitter-Link. Ich möchte ein Bild mit active_strage in der Profiltabelle speichern.

Implementiertes Assistentenformat

In Bezug auf die Implementierung dieser Funktionen Dieser Artikel ist ziemlich nah, also habe ich darauf verwiesen.

Problem

Im Assistentenformat konnte ich alles außer dem Bild speichern, aber das Bild wird nicht gespeichert.

registrations_controller


class Users::RegistrationsController < Devise::RegistrationsController

  def create
    @user = User.new(sign_up_params)
    unless @user.valid?
      render :new and return
    end
    session["devise.regist_data"] = {user: @user.attributes}
    session["devise.regist_data"][:user]["password"] = params[:user][:password]
    @profile = @user.build_profile
    render :new_profile
  end

  def create_profile
    @user = User.new(session["devise.regist_data"]["user"])
    @profile = Profile.new(profile_params)
    unless @profile.valid?
      render :new_profile
    end
    @user.build_profile(@profile.attributes)
    @user.save
    session["devise.regist_data"]["user"].clear
    sign_in(:user, @user)
    redirect_to root_path
  end

  private

  def profile_params
    params.require(:profile).permit(:avatar, :favorite_beer, :twitter_link, :info)
  end

Es scheint, dass die folgende Beschreibung darin schlecht war.

registrations_controller


@user.build_profile(@profile.attributes)
@user.save

Hier werden @user und @profile mit build verknüpft und zusammen mit @ user.save gespeichert, aber es scheint, dass es aufgrund des Speicherns hier nicht gut funktioniert. Finden Sie diesen Artikel

Ursache Der Zeitpunkt, zu dem die Datei tatsächlich in Active Storage gespeichert wird, ist der Zeitpunkt, zu dem das Modell gespeichert und der Prozess festgeschrieben wird. Selbst wenn Sie ein Bild aus dem Modell anhängen, bevor es gespeichert wird, scheint sich die Datei in einem unvollständigen Zustand zu befinden.

Es scheint, dass Active Strage nicht ohne das Speichern des Modells auskommen kann, also habe ich es gelöst, indem ich die Beschreibung wie folgt geändert habe.

registrations_controller


#In jedem Modell gespeichert
# @user.build_profile(@profile.attributes)
@user.save
@profile.user_id = @user.id
@profile.save

Zusammenfassung

Ehrlich gesagt kann die Ursache des Fehlers sein, dass ich ihn verwendet habe, obwohl ich nicht verstanden habe, wie man mit Build speichert. Ich hoffe, Sie finden es hilfreich.

Recommended Posts

[rails6.0.0] Speichern von Bildern mit Active Storage im Assistentenformat
So verknüpfen Sie Bilder mit FactoryBot Active Storage
[Rails] Verwendung von Active Storage
[Rails] So laden Sie Bilder mit Carrierwave hoch
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
[Schienen] Wie poste ich Bilder?
[Schienen] Speichern Sie Bilder mit Carrierwave
[Rails API + Vue] Laden Sie Bilder mit Active Storage hoch und zeigen Sie sie an
So stellen Sie jQuery in Rails-Apps mit Webpacker bereit
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
[Rails] Implementierung einer neuen Registrierungsfunktion im Assistentenformat mit devise
[Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch
[Rails] So laden Sie Bilder mit refile und refile-s3 in AWS S3 hoch
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
So fügen Sie ein Video in Rails ein
Verwendung von MySQL im Rails-Tutorial
[Rails] So konfigurieren Sie das Routing in Ressourcen
Rails Active Storage verkleinert Bilder vor dem Hochladen
So implementieren Sie Ranking-Funktionen in Rails
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
Verwendung von credentials.yml.enc aus Rails 5.2
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
[Rails] Verwendung von Auswahlfeldern in Ransack
Wie man Rails allgemein ins Japanische übersetzt
So speichern Sie Bilder auf Heroku in S3 unter AWS
So trennen Sie .scss nach Controller in Rails
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
So implementieren Sie eine ähnliche Funktion in Rails
So erstellen Sie einfach ein Pulldown mit Rails
Verwendung von JQuery in Rails 6 js.erb
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So überprüfen Sie Rails-Befehle im Terminal
Erstellen Sie in Rails 6 einen Drag-and-Drop-Markdown-Editor (mit Active Storage, SimpleMDE und Inline-Anhang).
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
So implementieren Sie eine nette Funktion in Ajax mit Rails
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
Verwenden Sie Bilder mit Schienen
[Schienen] Wie poste ich Bilder?
[Rails] Videos mit Rails hochladen (ActiveStorage)
[Schienen] Speichern Sie Bilder mit Carrierwave
Rails6 OmniAuth activestorage Benutzerbild abrufen
[So fügen Sie ein Video mit Rails in haml ein]
So deinstallieren Sie Rails
So löschen Sie mit Docker Bilder ohne Tags in großen Mengen
So schreiben Sie eine Datumsvergleichssuche in Rails
Verwenden Sie Bilder mit Schienen
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So laden Sie Bilder von AWS S3 herunter (Rails, Carrierwave)
Abfragen von Arrays in jsonb mit Rails + postgres
[Rails 6] So legen Sie ein Hintergrundbild in Rails [CSS] fest
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht