2012-10-23 30 views
7

Khi thực hiện một số phương thức trợ giúp, đôi khi, tôi muốn lưu trữ một số kết quả tính toán ở nơi nào đó có thể truy cập từ phương thức trợ giúp như bộ đệm.Caching đánh giá kết quả trong các phương thức trợ giúp đường ray

Nếu tôi lưu trữ nó vào biến mẫu, nó sẽ gây ô nhiễm các trường hợp, do đó, có vẻ như không khôn ngoan để làm điều đó.

Bất kỳ nơi nào tốt để lưu trữ giá trị như vậy? Hoặc làm như vậy tính toán trọng lượng nặng trong một người trợ giúp là một ý tưởng tồi?

Trả lời

12

Thỉnh thoảng tôi sử dụng bộ đệm Rails để lưu trữ loại giá trị này. Mã này giống như thế này,

def helper_method 
    Rails.cache.fetch('helper_value') do 
    # calculate the value if it does not exist 
    ... 
    end 
end 
+1

Cảm ơn. Tôi nghĩ rằng việc sử dụng bộ nhớ cache không phải là những gì tôi mong đợi nhưng từ quan điểm của người trợ giúp, đây là cách tự nhiên để giải quyết vấn đề. Cảm ơn. – shigeya

+0

Chỉ cần một mẹo: 'config.action_controller.perform_caching = false' sẽ KHÔNG vô hiệu hóa Rails.cache.fetch, chỉ trợ giúp hành động' cache' ActionView thông thường. Xem phần này: http://stackoverflow.com/a/43991463/1290457 – sandre89

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