Làm thế nào tôi có thể đạt được điều này?Làm thế nào để cập nhật một thuộc tính mà không cần chạm vào thuộc tính updated_at?
cố gắng để tạo ra 2 phương pháp, gọi là
def disable_timestamps
ActiveRecord::Base.record_timestamps = false
end
def enable_timestamps
ActiveRecord::Base.record_timestamps = true
end
và phương pháp cập nhật chính nó:
def increment_pagehit
update_attribute(:pagehit, pagehit+1)
end
lượt timestamps và tắt bằng callbacks như:
before_update :disable_timestamps, :only => :increment_pagehit
after_update :enable_timestamps, :only => :increment_pagehit
nhưng nó không phải cập nhật mọi thứ, ngay cả thuộc tính mong muốn (pagehit).
Bạn có lời khuyên nào không? Tôi không muốn phải tạo một bảng khác chỉ để đếm các pagehits.
Hãy thử sử dụng 'update_attributes! (: Pagehit => pagehit + 1)' và xem bạn có gặp phải lỗi nào không. BTW, bạn đã dán 'def disable_timestamps' hai lần do nhầm lẫn ở đây, hay là nó giống nhau trong mã của bạn? – Zabba
Có thể trùng lặp của [Có cách nào để tránh tự động cập nhật các trường dấu thời gian Rails không?] (Http://stackoverflow.com/questions/861448/is-there-a-way-to-avoid-automatically-updating-rails-timestamp -fields) –