Вместо удаления атрибутов из вашей модели, почему бы не загрузить только то, что вам нужно?Часто в ваших интересах использовать данные напрямую, а не привлекать модели при выполнении простых числовых сравнений.Требования к хранилищу для простого хеша значительно ниже, чем для полного экземпляра ActiveRecord.
В этом случае select_all
ваш друг:
class Movie < ActiveRecord::Base
def self.data_for(*ids)
select_all(
sanitize_sql([ "SELECT id, score FROM #{quote_table_name} WHERE id IN (?)", ids.flatten ])
).inject({ }) do |h, row|
h[row[:id].to_i] = row
h
end
end
end
Это создаст простой хеш, который выглядитчто-то вроде этого:
Movie.data_for(2, 5, 6, 89, 2467)
# => { 2 => { :id = > '2', :score => '4' }, ... }
Вы можете очистить структуру, если хотите конвертировать строки в целые числа по мере необходимости, и это еще больше уменьшит ваши требования к хранилищу.Вы можете хранить много данных с простыми числами и простыми хешами.
Сохранение этого хеша в Memcache на данный момент является простым упражнением с использованием Rails.cache