У меня есть несколько моделей, которые содержат статические данные, и я пытаюсь их кешировать. Я читал различные руководства и Railscasts по кешированию и думал, что это будет просто, но все еще не могу понять это. Например, у меня есть следующая модель
class ActionType < ActiveRecord::Base
def self.find(id)
Rails.cache.fetch(cache_key) { ActionType.find(id) }
end
end
Но это создает следующие ошибки:
wrong number of arguments (2 for 1)
со следующей трассировкой стека
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations/belongs_to_association.rb:49:in `find'
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations/belongs_to_association.rb:49:in `send'
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations/belongs_to_association.rb:49:in `find_target'
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations/association_proxy.rb:240:in `load_target'
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations/association_proxy.rb:112:in `reload'
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/associations.rb:1219:in `action_type'
Я недавно обновился до Rails 2.3.3 (с 2.0.1), чтобы использовать преимущества кэширования, встроенного в более свежие версии.
Кроме того, большинство этих моделей представляют собой простые справочные таблицы с идентификатором и описанием. Тем не менее, у каждого есть 30 столбцов и более 100 строк, но это все еще действительно статические данные, которые я хотел бы кэшировать, если это возможно. Все эти 30 столбцов, кроме одного, являются логическими значениями и маленькими целыми числами (последний является короткой строкой), поэтому он не должен занимать слишком много памяти.