Я вообще не вижу такого поведения, даже когда взаимодействую с объектом, созданным до обновления класса. При запуске следующего в IRB, у меня нет ошибок:
>> gem 'mongo_mapper', '0.7.4'
=> true
>> require 'mongo_mapper'
=> true
>> MongoMapper.database = 'test'
=> "test"
>> class Foo
>> include MongoMapper::Document
>> key :something
>> end
=> #<MongoMapper::Plugins::Keys::Key:0x101f8f938 @default_value=nil, @type=nil, @name="something", @options={}>
>> f = Foo.new(:something => 'thing')
=> #<Foo _id: ObjectID('4c4dc9af712337447c000001'), something: "thing">
>> f.save
=> true
>> f
=> #<Foo _id: ObjectID('4c4dc9af712337447c000001'), something: "thing">
>> class Foo
>> key :something_else
>> end
=> #<MongoMapper::Plugins::Keys::Key:0x101f6ad90 @default_value=nil, @type=nil, @name="something_else", @options={}>
>> f
=> #<Foo something_else: nil, _id: ObjectID('4c4dc9af712337447c000001'), something: "thing">
>> f.something_else
=> nil
Поскольку кажется, что у вас необычная проблема, вам могут помочь подробности вашего варианта использования. Не могли бы вы дать нам более полный пример кода? Если в коде есть проприетарный материал, который не работает, уменьшите его до минимального значения, необходимого для его устранения, и опубликуйте полные объявления ваших моделей и код, который вы используете для доступа к ним.