IdentityMap =========== Adds simple hand controlled identity map for ActiveRecord. Installing ========== in Rails 2.3 in config/environment.rb config.gem 'ar-simple-idmap', :lib => 'identity_map' in Rails 3 in Gemfile gem 'ar-simple-idmap', :require => 'identity_map' Enabling ======== To enable in ApplicationController (it is not enabled by default). class ApplicationController < ActionController::Base use_identity_map #(installs around filter) # or use_identity_map :only=>[:index, :show] # or use_identity_map :except=>[:update] end If you decide to disable filter in sub controllers: class ClientController < ApplicationController dont_use_identity_map :only=>[:save, :update, :messy_action] end Then you should enable identity map for each model class individually: class TarifPlan < ActiveRecord::Base use_id_map has_many :clients end class Client < ActiveRecord::Base use_id_map belongs_to :tarif_plan end You can use identity map for all models by writing in initializer: class ActiveRecord::Base use_id_map end To enable in rake task or script: ActiveRecord::Base.with_id_map do # all things here goes with identity map end or equivalently Client.with_id_map do # all things here goes with identity map # not only for Client end If you found that identity logic does wrong thing in some particular place, you could temporary disable it: ActiveRecord::Base.without_id_map do # all things here goes without identity map end Client.without_id_map do # all things here goes without identity map # not only for Client end Copyright ========= inspired by http://github.com/pjdavis/identity-map Copyright (c) 2010 Sokolov Yura aka funny_falcon, released under the MIT license.