adequate-record

___ qstnhdr ___ Klonen einer Relation in Schienen ___ answer29686747 ___

Bearbeitet

In erster Linie funktioniert Ihr Code . Es erhöht nicht %code% oder zeigt abnormierte Nachrichten an, die auf Schienen laufen. 4.2.1.

Der Code auf Ihrer Seitenaktion muss keine Beziehung klonen, da er in jedem Monatsschritt eine neue erstellt (mit: %code% ). Ja, es gibt 12 Abfragen, aber es ist kein Problem für Sie.

Es ist nicht so wichtig, aber Sie haben zwei Tippfehler bei der Frage. Ihr Modell muss %code% mit %code% ändern und der Modellname muss %code% und nicht %code% sein.

Ich teste es auf der rails-Konsole (über %code% anstelle von %code% und% %code% anstelle von %code% -Feld), aber es ist das gleiche und funktioniert gut. Und ich bin mir ziemlich sicher, dass wenn Sie eine neue Rails 4.2.1 App starten und den Code bei der Frage verwenden (mit festgesetzten Tippfehlern), wird es funktionieren.

%Vor%

Aber Sie haben ein Problem . Dieses Problem bezieht sich nicht auf die API für öffentliche Schienen, da es keine Methoden gibt, die diesen Fehler oder diese Abwertung auslösen könnten. Das Rails-Team sagt, dass jede %code% public-Methode nicht Teil der öffentlichen API ist. Viele der Abfragemethoden (wenn nicht alle) haben eine Paar-Bang-Methode ( code ), wodurch die Beziehung geändert wird (anstatt einen Klon zurückzugeben) und der %code% -Fehler (oder die veraltete Nachricht der vorherigen Version) ausgelöst wird. Diese public -Methoden sind %code% und nicht Teil der öffentlichen Rails-API.

Was ist zu tun? Es ist nicht einfach:

  1. suche deinen Code nach diesen Bang-Methoden, vielleicht einen Affen-Patch, der auf AR gemacht wurde.
  2. überprüfe die Edelsteine, die du benutzt. Vielleicht solltest du eine neue App starten, in der der Code funktioniert, und alle Edelsteine ​​hinzufügen, die du in deiner Ziel-App hast. Wenn das nicht klappt, kannst du versuchen, Edelsteine ​​zu entfernen, bis sie wieder funktioniert.

Ich beziehe mich auf die Bang-Methoden, aber es gilt auch für die Methode, die die Beziehung ändert (dies kann nicht von der öffentlichen API durchgeführt werden). Sie müssen nach Affenpflaster suchen oder sich über die Beziehung erstrecken.

Das muss ausreichen, um das Problem zu beheben.

Ich habe Ihren Kommentar gelesen, und ich habe den Punkt, ich denke diese Optionen:

  • Rails Datenbank-Unabhängigkeit funktioniert durch arel. Und Arel hat keine Methoden, um direkt mit db-Funktionen zu arbeiten (Monat eines Datumsfeldes). Sie können arel erweitern und schreiben, aber Sie müssen einen für schreiben PostgreSql eine für MySql andere für Sqlite. (Zu teuer, dabei Punkt)

  • Wenn Sie denselben DB-Manager für dev / test / prod verwenden, können Sie einen partiellen verwenden Textabfrage wie ich vorgeschlagen habe. (Das mag dich nicht)

  • Behalte die 12 Fragen (ich denke du kannst damit leben)

  • Fügen Sie ein eigenes Feld zu group_by hinzu (year_month könnte sein). (Sehr rigig, schwer zu ändern)

Ich behalte die alte Antwort , denn: Wenn ich du wäre, würde ich so etwas tun:

%Vor%

Auf der Aktion der Controller-Seite können Sie Folgendes verwenden: (Ich empfehle die Verwendung)

%Vor%

Gibt einen Hash mit diesem Muster zurück: (mehr von hier ) )

%Vor%

Wenn Sie jedoch das gleiche %code% wie zuvor erhalten möchten, müssen Sie das Ergebnis mit Ruby abbilden.

%Vor%

Hinweis1: Dieser Code funktioniert für PostgreSQL, da er die Funktion %code% verwendet, wenn Sie mit MySql arbeiten müssen, verwenden Sie stattdessen %code% . Beim Mappen mit MySql müssen Sie %code% anstelle von %code% verwenden.

Hinweis2: Der %code% -Aufruf hat Parameter für seine Felder getrennt, weil Sie zwei Werte für den Schlüssel des zurückgegebenen Hashes haben möchten.

    
___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungsframework, das in Ruby geschrieben wurde. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ answer29756596 ___

In meinem Fall war es der Quietscher-Edelstein, der die Verwarnungswarnung produziert. Ein einfacher Monkeypatch behebt die Warnung.

%Vor%

Ich bin nicht sicher, ob es Quietschverhalten bricht, aber es funktioniert für mich. Es scheint ein Problem mit Rails 4.2.x in Kombination mit Quietschen zu sein. Ich habe dies auch in den Quietschetiketten-Tracker geschoben Ссылка .

    
___ tag123railsactiverecord ___ Die Implementierung der objektrelationalen Zuordnung (ORM) unter Verwendung des Active Record-Musters im Ruby-on-Rails-Framework. ___ answer29171612 ___

Kurze Antwort:

  

Ignoriere es. Die Deprecation-Nachricht wurde aus dem Master-Zweig von Rails entfernt. Rails 5 wird sich nicht darüber beschweren.

Lange Antwort:

Die folgenden Probleme / Commits scheinen den Eindruck zu erwecken, dass die veraltete Nachricht versehentlich hinzugefügt und entfernt wurde:

Könnte es wert sein, Ihren Code mit dem Master-Zweig der Schienen auszuprobieren.

    
___ qstntxt ___

Ich erhalte bei einem Upgrade auf Rails 4.2.1, %code%

Deprecation-Fehler

Die Aktion, die ich ausführen möchte, erhält die Anzahl der Benutzer pro Monat, die sich angemeldet haben.

Mein Test ist einfach:

%Vor%

Controller Aktion:

%Vor%

Benutzermodell

%Vor%

Ich stelle fest, dass ich fast die gleiche Abfrage 12 Mal, aber mit verschiedenen Parametern ausgeführt habe. Diese Methode wird an anderer Stelle verwendet, wenn die Benutzer nicht gruppiert sind. Wie kann ich eine Beziehung "klonen", wie in der Verwarnungswarnung vorgeschlagen?

Ich möchte das nicht einfach ignorieren, da es meinen Bildschirm füllt, während ich Tests durchführe, was nicht sehr hilfreich ist

    
___ tag123requireterecord ___ Ein Teil des aktiven Datensatzes von rails, der SQL-Fragmente zwischenspeichert, um die Leistung zu verbessern ___ answer29711422 ___

Ich sehe zwei mögliche Lösungen:

Sie können den Cache zwischen Abfragen löschen:   %Code% von Löschen des aktiven Datensatz-Cache

Sie können %code% verwenden, um die Beziehung zu klonen, bevor Sie sie manipulieren, damit Sie den Cache nicht ungültig machen.

    
___ tag123rails421 ___ Für Probleme, die für die untergeordnete Version der Version 4.2.1 von Rails spezifisch sind. Wenn Ihre Frage generell für Ruby on Rails gilt, verwenden Sie das Tag [ruby-on-rails] ___
4
Antworten

Klonen einer Relation in Schienen

Ich erhalte bei einem Upgrade auf Rails 4.2.1, Modifying already cached Relation. The cache will be reset. Use a cloned Relation to prevent this warning. Deprecation-Fehler Die Aktion, die ich ausführen möchte, erhält die Anzahl der Benutz...
20.03.2015, 14:41