Techioz Blog

Mongoidでサブクラスのコレクション名を設定するにはどうすればよいですか?

概要

class Foo
  include Mongoid::Document
end

class Bar < Foo
end

Foo.all は Bars を返し、Bar.all は Foos を返します。

私は試した

class Bar < Foo
  store_in collection: 'bars'

しかし、得た

Mongoid::Errors::InvalidStorageParent:
Problem:
  Invalid store_in call on class Bar.
Summary:
  The :store_in macro can only be called on a base Mongoid Document

Mongoid 4.0.2の使用

解決策

Bar も Mongoid ドキュメントにする必要があります。

class Bar < Foo
  include Mongoid::Document
  store_in collection: 'bars'