Mám podezření, že ActiveRecord si toho nevšiml vašich friends
pole se změnilo, protože základní odkaz na pole se nezmění, když:
self.friends.push(target)
Tím se změní obsah pole, ale samotné pole bude stále stejné pole. Vím, že tento problém se objevuje s drahokamem postgres_ext v Rails3 a vzhledem k tomuto problému:
Atribut řetězce není označen jako nečistý, když se změní pomocí
<<
Očekával bych, že se Rails4 bude chovat stejně.
Řešením by bylo vytvořit nové pole, spíše než se snažit pole upravit na místě:
update_attributes friends: self.friends + [ target ]
Existuje mnoho způsobů, jak vytvořit nové pole a zároveň přidat prvek do existujícího pole, použijte kterýkoli z nich.