Nach der Bereitstellung der ursprünglichen App stelle ich fest, dass doppelte Daten registriert sind.
Als Spezifikation der App möchte ich die registrierten Datensätze nicht duplizieren.
Wenn ich die Datenbank überprüfe,
Es stellt sich heraus, dass eine Registrierung möglich ist, wenn sich der zu registrierende Benutzer unterscheidet.
Die Lösung hat einige Zeit gedauert, daher werde ich sie zur Erinnerung aufzeichnen.
Die Bedingung für die Datenregistrierung wurde in der Steuerung festgelegt.
require 'rubygems'
require 'mechanize'
def create
f = (params[:wiki_url])
unless
f.start_with?("https://ja.wikipedia.org/wiki/")
flash[:notice] = "Konnte nicht gespeichert werden, da eine ungültige URL eingegeben wurde."
redirect_to action: 'new'
return
else
agent = Mechanize.new
page = agent.get(f)
page.encoding='utf-8'
Unten weggelassen...
Geben Sie in der sofern-Anweisung "https://ja.wikipedia.org/wiki/" in die eingegebenen Daten (URL) ein. Wenn nicht enthalten, wurde die Bedingung so festgelegt, dass sie nicht registriert wird.
Wenn jedoch doppelte Datensätze vorhanden sind, wurde die Bedingung, dass sie nicht registriert sind, nicht berücksichtigt Die gleichen Daten wie auf dem Bild wurden registriert.
Ich habe es wie folgt umgeschrieben und gelöst.
require 'rubygems'
require 'mechanize'
def create
f = (params[:wiki_url])
if not
f.start_with?("https://ja.wikipedia.org/wiki/")
flash[:notice] = "Konnte nicht registriert werden, da eine ungültige URL eingegeben wurde."
redirect_to action: 'new'
return
elsif
Company.where(page_url: "#{f}").count >= 1
flash[:notice] = "Konnte nicht registriert werden, da die registrierte URL eingegeben wurde."
redirect_to actiont: 'new'
return
else
agent = Mechanize.new
page = agent.get(f)
page.encoding = 'utf-8'
Unten weggelassen...
Der Artikel über Teratail war hilfreich und ich habe eine Lösung gefunden. : point_right: Ich möchte einen Datensatz erhalten, in dem zwei oder mehr Daten mit demselben Namen mit ActiveRecord registriert werden.
Es gibt zwei wesentliche Änderungen.
-Änderte von es sei denn Anweisung zu wenn nicht Anweisung
Es gibt kein Elsif im Rubin, außer Aussage. .. .. Korrekt.
Ich möchte zusätzlich zur ungültigen Bedingung zur Verhinderung der Dateneingabe eine Bedingung zur Verhinderung von Duplikaten hinzufügen. Da elsif jedoch nur in Anweisungen verwendet werden kann, Elsif anstelle von if not-Anweisung hinzugefügt.
Der Ablauf der Bedingungen (Verarbeitung) ist wie folgt.
Sie können Datensätze abrufen, die die Bedingungen mit .where ("Bedingung") erfüllen.
Modellname.where("Bedingungen")
. Dieses Mal erhalten wir die Spalte page_url des Unternehmensmodells.
Company.where(page_url)
. Außerdem möchte ich nach Daten suchen, die mit den in der Spalte page_url eingegebenen Daten übereinstimmen. Fügen Sie wie folgt hinzu.
Company.where(page_url: "#{f}")
.
Die Variable f wird an der folgenden Stelle definiert, und der Inhalt ist wie folgt.
require 'rubygems'
require 'mechanize'
def create
f = (params[:wiki_url]) <=Das ist hier.
Unten weggelassen...
. Feststellen, wie viele als Ergebnis der Suche in der Spalte page_url gefunden wurden Fügen Sie eine Zählmethode hinzu.
Company.where(page_url: "#{f}").count
Überprüfen Sie, ob 1 oder mehr vorhanden sind, dh zählen Sie die Anzahl der URLs, die mit den eingegebenen Daten übereinstimmen.
Company.where(page_url: "#{f}").count >= 1
Es spiegelt sich in der App wider, also spielen Sie bitte damit.
Unsung:hero
Recommended Posts