0

我正在尝试创建一个服务对象以从product.rbAR 模型中提取一些方法,但由于某种原因,我无法自动加载新TwitterShare类。当我打开控制台并尝试类似Product.last.twitter_share_text我得到NameError: 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"

然后重新启动consoleor server

rails现在应该能够正确定位twitter_share.rb和加载TwitterShare

有关详细信息,请参阅自动加载和重新加载常量

于 2016-06-08T22:49:28.083 回答