我正在尝试创建服务对象以从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
答案 0 :(得分:1)
您需要让rails
知道可能找到TwitterShare
的位置。
将以下内容添加到application.rb
config.autoload_paths << "#{Rails.root}/app/services"
然后重新启动console
或server
。
rails
现在应该能够找到twitter_share.rb
并正确加载TwitterShare
。
有关详细信息,请参阅Autoloading and Reloading Constants。