2010-10-11 11 views
6

Mam polimorficzny relacji asocjacji dzieje, a kiedy odzyskać rekord przez niego, takie jak:niezdefiniowana metoda `update_attribute” dla ActiveRecord :: Relacja gdy wezwał rekordzie wyszukanym drodze dziedziczenia

hour = my_model.find(keeper_id).hours.where("day = ?", day_index) 

Następnie spróbuj zadzwoń update_attributes na nim:

hour.update_attribute(:start_time, start_time) 

pojawia się błąd:

NoMethodError (undefined method `update_attribute' for #<ActiveRecord::Relation:0x0000010458c708>): 
    activerecord (3.0.0) lib/active_record/relation.rb:373:in `method_missing' 

Przypuszczam, że to dlatego, że odzyskałem dane dzięki relacji. Jak mogę to obejść?

Odpowiedz

17

Atrybut aktualizacji działa dla pojedynczego rekordu, a nie dla kolekcji. Zamiast tego użyj update_all (składnia jest trochę inna).

+7

można również dodać ".first", który zamienia kolekcję w pojedynczy rekord – 0x4a6f4672

Powiązane problemy