MongoMapper では、クラスはスーパークラスからキーとメソッドを継承できます。ここでは、整数キー「baz」を含むコードと、そのインスタンスの baz 値を連続したカウント数に設定する単純な並べ替えメソッドを記述しました。
require 'mongo_mapper'
require './init/mongo_init' # Load database connection
class Sortable
    include MongoMapper::Document
    key :baz, Integer
    def self.sort_baz
        counter = 0
        Sortable.each do |record|
            record.baz = counter
            counter += 1
            record.save
        end
    end
end
class Model < Sortable
    include MongoMapper::Document
    key :foo, String
    key :bar, String
end
Model.delete_all
model1 = Model.new.save
model2 = Model.new.save
model3 = Model.new.save
Model.sort_baz
Model.all.each do |record|
    puts record.inspect
end
結果は次のとおりです。
#<Model _id: BSON::ObjectId('525ecd73ab48655daa000001'), _type: "Model", baz: 0>
#<Model _id: BSON::ObjectId('525ecd73ab48655daa000002'), _type: "Model", baz: 1>
#<Model _id: BSON::ObjectId('525ecd73ab48655daa000003'), _type: "Model", baz: 2>
これが私の質問です。Ruby は複数の継承をサポートしていないため、Ruby ではモジュールとインクルードを使用することをお勧めします。
しかし、MongoMapper ドキュメントはモジュールではなく、クラスでなければなりません。言い換えれば、これは私がやりたいことですが、うまくいきません:
module Sortable
    include MongoMapper::Document
    key :baz, Integer
    def self.sort_baz
        counter = 0
        self.each do |record|
            record.baz = counter
            counter += 1
            record.save
        end
    end
end
module OtherFunctionality
    include MongoMapper::Document
    key :bam, Integer
end
class Model
    include MongoMapper::Document
    key :foo, String
    key :bar, String
    include Sortable
    include OtherFunctionality
end
ケースバイケースで MongoMapper キーとクラスメソッドの複数の再利用可能なセットをきれいに組み合わせる方法はありますか?