0

AR モデルからいくつかのメソッドを抽出するサービス オブジェクトを作成しようとしていますproduct.rbが、何らかの理由で新しいTwitterShareクラスを自動ロードできません。コンソールを起動して、次のようなことを試みるとProduct.last.twitter_share_textNameError: uninitialized constant Product::TwitterShareエラーが発生します。

ここで何が起こっているのですか?フォルダ/ファイルを整理するにはどうすればよいですか? Railsにサービスを自動ロードするように指示する必要がありますか? 現在のコードは次のとおりです。

アプリ/モデル/product.rb

class Product < ActiveRecord::Base  

  def twitter_share_text
    TwitterShare.new(name: self.name, oneliner: self.oneliner).return_text
  end

アプリ/サービス/twitter_share.rb

class TwitterShare
  attr_reader .........

  def initialize....
end
4

1 に答える 1

2

railsどこで見つかる可能性があるかを知らせる必要がありますTwitterShare

以下をapplication.rb

config.autoload_paths << "#{Rails.root}/app/services"

consoleまたはを再起動しserverます。

rails正しく検索twitter_share.rbしてロードできるはずです。TwitterShare

詳細については、定数のオートロードとリロードを参照してください。

于 2016-06-08T22:49:28.083 に答える