- 別名のアトリビュートメソッドが定義される(エイリアス)
- データベースのコレクションには abbr で指定したフィールド名で保存される
- データマイグレーションが必要なフィールド名の変更を無停止でやる、みたいなときに便利かもしれない
- 自分のユースケースでは、 ActiveSupport::Concern を使った mixin で定義されるメソッドの中から参照するフィールド名が違う、みたいなときうまい具合に使えた
require 'mongo_mapper' MongoMapper.database = 'testing' class Person include MongoMapper::Document key :given_name, String, abbr: :first_name key :sur_name, String, abbr: :last_name end john = Person.create(first_name: 'John', last_name: 'Doe') john.first_name #=> "John" john.given_name #=> "John" Person.create(given_name: "Melody", sur_name: "Nelson") Person.all [#<Person _id: BSON::ObjectId('554e3e7c421cdc660c000002'), given_name: "John", sur_name: "Doe">, #<Person _id: BSON::ObjectId('554e3eba421cdc660c000003'), given_name: "Melody", sur_name: "Nelson">]
Mongo Shell
> db.people.find() { "_id" : ObjectId("554e3e7c421cdc660c000002"), "last_name" : "Doe", "first_name" : "John" } { "_id" : ObjectId("554e3eba421cdc660c000003"), "last_name" : "Nelson", "first_name" : "Melody" }