PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Masowa aktualizacja połączonej tabeli za pomocą ActiveRecord update_all i Rails 4

Od Chat.update_all doda UPDATE chats SET... jedyny sposób, w jaki przychodzi mi do głowy uzyskać rails do wykonania aktualizacji z aliasem (UPDATE chats AS c ) jest przy użyciu connection.update i ciąg sql:

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'
});

Nie jest to świetne, jeśli chcesz uniknąć fragmentów SQL, ale użycie złączenia, jak w twoim pytaniu, może być jedynym sposobem, jeśli chcesz użyć AREL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernacja :Wyodrębnij kolumnę zawierającą dane binarne, które nie powinny być ładowane

  2. BŁĄD:podzapytanie w FROM nie może odnosić się do innych relacji tego samego poziomu zapytania

  3. Zrzut Postgres zawierający tylko części tabel dla migawki dewelopera

  4. Bardziej niezawodne zestawienia z obsługą ICU w PostgreSQL 10

  5. Identyfikator automatycznego przypisywania Railsów, który już istnieje