2012-12-16 26 views
10

Konsolda otomatik tamamlama kullanıldığında, özniteliklerime genellikle "_was" gönderiyorum. Ancak, kullanım için herhangi bir doküman veya en iyi uygulama bulamıyorum. Ne yapar ve nasıl kullanılmalıdır?ActiveModel yöntem özniteliği "_was" ne için kullanılır?

Örnek: user.fname source_location kullanma user.fname_was

, ben onu takip ettik yöntemi vardır:. Active_model/attribute_methods.rb", hat 296 ancak belirli bir şey değildir

cevap

29

bir olduğunu ActiveModel parçası :: Kirli Sen https://github.com/rails/rails/blob/af64ac4e5ce8406137d5520fa88e8f652ab703e9/activemodel/lib/active_model/dirty.rb#L146 Örnek

person = Person.find_by_name('Uncle Bob') 
person.changed?  # => false 

Değişim burada ismini görebilirsiniz:

person.name = 'Bob' 
person.changed?  # => true 
person.name_changed? # => true 

#method _was return prev attribute value 
person.name_was # => 'Uncle Bob' 
person.name_change # => ['Uncle Bob', 'Bob'] 
person.name = 'Bill' 
person.name_change # => ['Uncle Bob', 'Bill'] 
+0

Harika, teşekkürler! Nereye bakacağını nasıl bildin? – beeudoublez

+3

sadece birkaç ay önce ile oynuyordu, ben kaynak kodu – Fivell

+2

kazıyordum ben de 'person.save!' Çağırmak 'name_was 'yeni' isim' ile aynı olacak –