こちら で説明されているように、Rails Engine をオーバーライドするデコレーターをいくつか作成しています。エンジンからクラスに単純なメソッドを追加しようとしています。コードは次のとおりです。
# app/decorators/models/my_engine/user_decorator.rb
MyEngine::User.class_eval do
def self.find_by_name_or_mis_id str
where("CONCAT(#{table_name}.firstname, ' ', #{table_name}.surname) LIKE CONCAT('%', :s, '%') OR mis_id = :s", { s: str })
end
end
私のアプリはメソッドを見つけることができず、レールコンソールでテストしようとしています:
# rails c
MyEngine::User.find_by_name_or_mis_id "John"
NoMethodError: undefined method `find_by_name_or_mis_id' for #<Class:0x007fcb85a45580>
コンソールで実行することで機能させることができますがrequire '/models/my_engine/user_decorator'
、レールがデコレータを取得しないのはなぜですか?