Christian Kruse: Jährlings-Badge

Hallo zusammen,

heute sind die Jährlings-Badges ein paar mal hust vergeben worden. Das war ein Bug in der Foren-Software, der hervorgerufen wurde durch eine fehlerhaft generierte SQL-Query.

Im User-Model definiere ich den Zusammenhang zwischen Usern und Badges so:

  has_many :badge_users, -> { order(:created_at) }, dependent: :delete_all,
                                                    foreign_key: :user_id
  has_many :badges, through: :badge_users

Das führt dazu, dass die Liste der User bei den Badges immer aufsteigend nach Datum sortiert ist, weil die Abfrage nach badge_users immer aufsteigend sortiert ist nach created_at. Nun habe ich aber, um zu prüfen, wann der letzte Jährlings-Badge vergeben wurde, folgenden Code verwendet:

        last_yearling = user
                          .badge_users
                          .where(badge_id: yearling.badge_id)
                          .order(created_at: :desc)
                          .first

Da aber das eine composable query ist, wurde das Sortieren aus dem User-Model nicht überschrieben sondern ergänzt, so dass diese Query dabei rauskam:

SELECT "badges_users".*
FROM "badges_users"
WHERE 
    "badges_users"."user_id" = 1
  AND
    "badges_users"."badge_id" = 13
ORDER BY
  "badges_users"."created_at" ASC,
  "badges_users"."created_at" DESC
LIMIT 1

Statt also den letzten Jährlings-Badge herauszusuchen wurde immer wieder der gleiche Jährlings-Badge von letztem Jahr, als das Feature eingeführt wurde, herausgesucht.

Ich habe das vorhin gefixed (ein Deployment über Edge, argh, was für ein Krampf), aber die überflüssigen Badges werde ich wohl erst Freitag oder Samstag löschen können, da ich morgen einen großen Teil des Tages in Besprechungen verbringen werde und den Rest des Tages im Auto sitzen werde…

Danke an die Problem-Melder 😀

LG,
CK

  1. Hallo Christian Kruse,

    ein Deployment über Edge, argh, was für ein Krampf

    Ach, es gibt schlimmere Browser. 😝

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. Hallo Matthias,

      ein Deployment über Edge, argh, was für ein Krampf

      Ach, es gibt schlimmere Browser. 😝

      Auf dem Tablet ist Edge sogar recht brauchbar: Schnell und das Zoomen wie am Smartphone funktioniert: einfach nur Ausschnitt vergrößern, bei Firefox hat Pinch-to-Zoom die gleichen Auswirkungen wie Strg + ...

      Trotzdem kein Grund, gleich komplett auf Windows 10 und Edge umzusteigen :-)

      Gruß
      Julius

  2. hallo

    Ich hätte da auch noch einen Mini-Bug, der gefixt werden darf, wenn du mal nichts mehr mit dir anzufangen weisst.

    Ich kann ja hier ohne Javascript so ziemlich alles machen. Wenn ich aber ein Posting erfolgreich abgeschickt habe, kommt die Bestätigungsmeldung, und die kann ich ohne Javascript nicht mehr wegklicken. Hier gilt eigentlich die Regel: was man ohne Javascript beginnt, soll man auch ohne Javascript zu Ende führen.

    danke.

    1. Hallo beatovich,

      Ich kann ja hier ohne Javascript so ziemlich alles machen. Wenn ich aber ein Posting erfolgreich abgeschickt habe, kommt die Bestätigungsmeldung, und die kann ich ohne Javascript nicht mehr wegklicken.

      den kannst du melden, dann geht das nicht so schnell unter wie hier im Forum.

      Gruß
      Julius

    2. Hallo beatovich,

      Ich kann ja hier ohne Javascript so ziemlich alles machen. Wenn ich aber ein Posting erfolgreich abgeschickt habe, kommt die Bestätigungsmeldung, und die kann ich ohne Javascript nicht mehr wegklicken.

      In der Tat… das wird auch nie gehen 😉 sie verschwindet beim nächsten Reload oder wenn du eine andere Seite öffnest.

      Hier gilt eigentlich die Regel: was man ohne Javascript beginnt, soll man auch ohne Javascript zu Ende führen.

      Diese Argumentation ist mir in diesem Zusammenhang schleierhaft.

      LG,
      CK

      1. @@Christian Kruse

        Wenn ich aber ein Posting erfolgreich abgeschickt habe, kommt die Bestätigungsmeldung, und die kann ich ohne Javascript nicht mehr wegklicken.

        In der Tat… das wird auch nie gehen 😉

        Klar geht das. Die Meldung erscheint als eigenes Dokument in einem Iframe. Außerdem in diesem Dokument: ein Meta-Refresh auf eine leere Seite. *undweg*

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        1. Hallo Gunnar,

          ihr beide versteht den Unterschied zwischen „das wird nie möglich sein” und „das ist technisch nicht möglich?” 😉

          LG,
          CK

      2. Hallo Christian Kruse,

        Wenn ich aber ein Posting erfolgreich abgeschickt habe, kommt die Bestätigungsmeldung, und die kann ich ohne Javascript nicht mehr wegklicken.

        In der Tat… das wird auch nie gehen 😉 sie verschwindet beim nächsten Reload oder wenn du eine andere Seite öffnest.

        Klar geht das. Die Meldung erhält eine ID und wird per target fokussiert. Sobald man drauf klickt, wird das target entfernt. 😉 *undweg*

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
  3. Hallo Christian,

    […] aber die überflüssigen Badges werde ich wohl erst Freitag oder Samstag löschen können

    [x] done

    LG,
    CK

    1. hallo

      hmmm

      1. Hallo beatovich,

        hmmm

        Tja, du bist halt ein Urgestein.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. Tja, du bist halt ein Urgestein.

          = fördert bisher unbekannte Fosilien zutage.

      2. hallo

        Browser Cache ganz geleert... ... leider ist immer noch gleiches Verhalten...

      3. Hallo beatovich,

        hmmm

        Hm? Du meinst, weil du 8 davon hast? Dein Registrierungsdatum ist 08.05.2008 19:21.

        LG,
        CK

        1. hallo

          Hm? Du meinst, weil du 8 davon hast? Dein Registrierungsdatum ist 08.05.2008 19:21.

          Das überrascht mich eigentlich, da ich gewiss ab 2003/4 hier gepostet habe. Es ist aber möglich, dass ich die ersten Jahre keinen Account hatte. Und an einen früheren Account-Wechsel kann ich mich nicht erinnern.

          1. Hallo beatovich,

            Das überrascht mich eigentlich, da ich gewiss ab 2003/4 hier gepostet habe. Es ist aber möglich, dass ich die ersten Jahre keinen Account hatte. Und an einen früheren Account-Wechsel kann ich mich nicht erinnern.

            Die Suche ergibt dies.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
            1. hallo

              Die Suche ergibt dies.

              Erzeugt einiges befremden ggg kommt davon, wenn man Accounts hijacked.

              PS: habe mal im WIKI bezüglich noscript rumgewütet.