# File lib/rspec/rails/mocks.rb, line 189
      def stub_model(model_class, stubs={})
        model_class.new.tap do |m|
          m.extend ActiveModelStubExtensions
          if defined?(ActiveRecord) && model_class < ActiveRecord::Base
            m.extend ActiveRecordStubExtensions
            primary_key = model_class.primary_key.to_sym
            stubs = stubs.reverse_merge(primary_key => next_id)
            stubs = stubs.reverse_merge(:persisted? => !!stubs[primary_key])
          else
            stubs = stubs.reverse_merge(:id => next_id)
            stubs = stubs.reverse_merge(:persisted? => !!stubs[:id])
          end
          stubs = stubs.reverse_merge(:blank? => false)
          stubs.each do |k,v|
            m.__send__("#{k}=", stubs.delete(k)) if m.respond_to?("#{k}=")
          end
          m.stub(stubs)
          yield m if block_given?
        end
      end