Rails 3 で mongoid を使用していますが、最近非常に難しい問題に直面しており、アドバイスが必要です。
私はCMSに取り組んでおり、アイデアの1つは、CMSがいくつかの基本的なモデル定義を提供し、エンドユーザーが必要に応じて独自の定義とコントロールで基本クラスを拡張し、それらを異なるコレクション(テーブル)に保存することでした。
class DcPage
include Mongoid::Document
field a ....
belongs_to b ....
validates a ....
end
class MyPage < DcPage
field c ....
validates c ....
end
mongoid の最後のバージョンまで、これは機能し (少しのハックで)、データは my_pages コレクションに保存されていました。何らかの問題により、mongoid はこの動作をサポートしなくなり、データは常に dc_pages コレクションに保存されます。
私の問題を説明する際に、mongoid チームは ActiveSupport::Concern を使用することを提案し、例を提供してくれました。拡張クラスが同じソースファイルで定義されている場合、これは完全に機能します。ところで。実際には決して起こりません。
module CommonBehaviour
extend ActiveSupport::Concern
included do
field :subject, type: String, default: ''
# ...
end
end
class DcPage
include Mongoid::Document
include CommonBehaviour
end
class MyPage
include Mongoid::Document
include CommonBehaviour
end
これまでのところ、2 番目のファイルで基本的なソース ファイルが必要な場合に機能することがわかりました。これは次のようになります: require '/some/path/to/my/gem/app/models/dc_page.rb
あなたは今私の痛みを見ることができますか?もちろん、基本的なソース ファイルは gem に戻されるため、移動ターゲットになります。
より良い解決策を教えてください。
によって TheR