changes
yöntemini kullanmamıştım. Ama hep sihirli yöntemler <attribute_name>_changed?
ve <attribute_name>_was
kullanabilirsiniz eminim:
services.any? {|s| s.attribute_name_changed?}
services.map(&:attribute_name_was)
fazla bilgi için
bakınız Ryan Bates railscast: #109 episode
GÜNCELLEME: Sen :after_delete
geçmek ve has_many
için :after_add
geri aramaları yapabilirsiniz ilişkilendirme doğrudan:
has_many :items, :after_add => :my_method_or_proc1, :after_remove => :my_method_or_proc2
Bu geri bildirimleri kullanarak eful ve nasıl çalıştıklarına dikkat edin. Onlar Onlar bir kez items.build
ve items.create
çağrılır. after_add
geri arama ilişkili nesne oluşturmaya yalnızca bir kez çağrılır Yani items.build
ararsanız ve sonra ( örneğin iç içe niteliklere sahip) ana nesneyi kaydedin. Ebeveyn doğrulama varsa o zaman items
inşa veritabanında kaydedilir ve after_add
geri arama güvenemezsiniz anlamına gelir. Başka bir deyişle, eklenen ilişkilendirmenin kaydının DB'ye kaydedildiğini söylemez. Dolayısıyla, öğenin eklendiğini ve yalnızca items.create
numaralı telefondan kaydedildiğini garanti edersiniz. Umarım bu açıklamayı anlarsınız.
Benim için yalnızca ilgili nesne güncellenmişse çalışır. İlişkili nesne eklendiyse veya kaldırılırsa, benim için çalışmaz (o zamandan beri "services" ilişkisinde artık yoktur). Neyi yanlış yapıyorum? – morgler