2012-12-16 27 views
10

Khi sử dụng tính năng tự động hoàn tất trong bảng điều khiển, tôi thường thấy "_was" được đăng lên các thuộc tính của mình. Nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc phương pháp hay nhất nào để sử dụng. Nó làm gì và nó nên được sử dụng như thế nào?Thuộc tính phương thức ActiveModel "_was" được sử dụng để làm gì?

Ví dụ: user.fname có phương pháp user.fname_was

Sử dụng source_location, tôi đã theo dõi nó xuống:. Active_model/attribute_methods.rb", dòng 296 nhưng không có bất cứ điều gì cụ thể

Trả lời

29

Đó là một một phần của ActiveModel :: bẩn Bạn có thể thấy nó ở đây https://github.com/rails/rails/blob/af64ac4e5ce8406137d5520fa88e8f652ab703e9/activemodel/lib/active_model/dirty.rb#L146 Ví dụ

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

Thay đổi tên:

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

Tuyệt vời, cảm ơn! Làm thế nào bạn biết nơi để tìm nó? – beeudoublez

+3

chỉ đang được chơi với nó vài tháng trước, tôi đã đào trong mã nguồn – Fivell

+2

Tôi cũng sẽ lưu ý rằng gọi 'person.save!' Sẽ đặt lại 'name_was' thành giống với tên' mới' –

Các vấn đề liên quan