rails组织服务对象的文件夹

时间:2016-06-08 20:18:53

标签: ruby-on-rails service-object

我正在尝试创建服务对象以从product.rb AR模型中提取一些方法,但由于某种原因,我无法自动加载新的TwitterShare类。当我按下控制台并尝试类似Product.last.twitter_share_text之类的内容时,出现NameError: uninitialized constant Product::TwitterShare错误。

这里发生了什么?我该如何组织我的文件夹/文件?我是否必须告诉自动加载服务?这是当前的代码:

应用程序/模型/ 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

1 个答案:

答案 0 :(得分:1)

您需要让rails知道可能找到TwitterShare的位置。

将以下内容添加到application.rb

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

然后重新启动consoleserver

rails现在应该能够找到twitter_share.rb并正确加载TwitterShare

有关详细信息,请参阅Autoloading and Reloading Constants