sql >> Database >  >> RDS >> PostgreSQL

Bulksgewijs bijwerken van een samengevoegde tabel met ActiveRecord update_all en Rails 4.

Sinds Chat.update_all zal UPDATE chats SET... de enige manier die ik kan bedenken om rails een update te laten doen met een alias (UPDATE chats AS c ) is met behulp van connection.update en een sql-tekenreeks:

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

Niet geweldig als je SQL-fragmenten wilt vermijden, maar het gebruik van een a join zoals in je vraag is misschien de enige manier als je AREL wilt gebruiken.




  1. Word lid van 2 tafels en geef ze weer op id, prioriteit en nummer

  2. MySQL krijgt een willekeurige waarde tussen twee waarden

  3. LINQ-naar-XYZ-polymorfisme?

  4. Mysql-gegevens in aparte html-tabellen categoriseren?