sql >> Database teknologi >  >> RDS >> PostgreSQL

Masseopdatering af en samlet tabel med ActiveRecord update_all og Rails 4

Siden Chat.update_all vil tilføje UPDATE chats SET... den eneste måde jeg kan komme i tanke om at få rails til at lave en opdatering med et alias (UPDATE chats AS c ) er ved at bruge connection.update og en sql-streng:

Chat.connection.update(Q%{
  UPDATE chats AS c 
  SET email = m.source_name
  FROM messages AS m
  WHERE c.id = m.chat_id 
    AND m.created_at >= '2014-10-10'
});

Ikke fantastisk, hvis du vil undgå SQL-fragmenter, men at bruge en a join som i dit spørgsmål kan være den eneste måde, hvis du vil bruge AREL.




  1. mysql-kommando til at vise aktuelle konfigurationsvariabler

  2. Design af fakturatabel

  3. Sådan fungerer LOAD_FILE()-funktionen i MySQL

  4. Tidszone datoformat i Oracle