いくつかのレールモデルに、個別のファイルに分割したいロジックがいくつかあります。
具体的には、これはこれらのモデルに固有のロジックであり、モデル間で共有されるものではありません。その場合、私はこのような懸念/ミックスインと質問を知っています。
ここではRubyを扱っているので、複数のクラス定義を用意するのがよいようです。例えば:
# in app/models/user.rb
class User < ActiveRecord::Base
...
end
# in app/lib/integrations/ext/user.rb
class User
...
end
私がここで直面している問題は、現在、適切な場所にモデル拡張を必要としていることです。自動読み込みのため、モデルと拡張機能を明示的に要求する必要があります。私の現在の最善の努力は、初期化子の内部にユーザーモデルとその拡張機能をプリロードすることです。
# in config/initializers/model_extensions.rb
require_dependency 'models/user'
require_dependency 'integrations/ext/user.rb'
ただし、これにより他のgemで問題が発生します(たとえば、ユーザーモデルがロードされたときにDeviseがロードされない)。
これを行うための良い方法はありますか、それとも私はここでキールを外していますか?Rubyのオープンクラスを利用することは、Rails以外の一般的なイディオムです。