Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Oba z nich zaktualizują obiekt bez konieczności jawnego informowania AR o aktualizacji.
Rails API mówi:
dla update_attribute
Aktualizuje pojedynczy atrybut i zapisuje rekord bez przechodzenia przez normalną procedurę sprawdzania poprawności. Jest to szczególnie przydatne w przypadku flag boolowskich w istniejących rekordach. Zwykła metoda update_attribute w Base jest zastępowana tą, gdy dodaje się moduł sprawdzania poprawności, co jest domyślnie.
dla update_attributes
Aktualizuje wszystkie atrybuty z przekazanego skrótu i zapisuje rekord. Jeśli obiekt jest nieprawidłowy, zapisywanie zakończy się niepowodzeniem, a false zostanie zwrócony.
Więc jeśli nie chcę, aby obiekt został sprawdzony, powinienem użyć update_attribute. Co się stanie, jeśli będę mieć tę aktualizację przed zapisaniem, czy zostanie ona przepełniona?
Moje pytanie brzmi, czy update_attribute omija również przed zapisaniem lub po prostu sprawdzanie poprawności.
Jaka jest poprawna składnia, aby przekazać skrót do update_attributes ... sprawdź mój przykład na górze.
before_save
wywołania zwrotnego). Fe zamiast update_attribute(:discount, 0.1) if amount > 100
ciebie mógł zrobić discount = 0.1 if amount > 100
. update_attribute
wywołuje save
obiekt, co w tym przypadku nie jest konieczne, ponieważ instrukcja znajduje się w before_save
wywołaniu zwrotnym i zostanie zapisana. Mam nadzieję, że to ma sens.
update_attribute
oświadczenie wbefore_save
wywołaniu zwrotnym? Nie mogę wymyślić dobrego powodu.