rails 组织服务对象的文件夹
rails organizing folders for service objects
我正在尝试创建一个服务对象以从 product.rb
AR 模型中提取一些方法,但由于某些原因我无法自动加载新的 TwitterShare
class .当我打开控制台并尝试 Product.last.twitter_share_text
之类的操作时,我收到 NameError: uninitialized constant Product::TwitterShare
错误。
这里发生了什么?我应该如何组织我的 folders/files?我必须告诉 rails 自动加载服务吗?这是当前代码:
app/models/product.rb
class Product < ActiveRecord::Base
def twitter_share_text
TwitterShare.new(name: self.name, oneliner: self.oneliner).return_text
end
app/services/twitter_share.rb
class TwitterShare
attr_reader .........
def initialize....
end
您需要让 rails
知道它可能在哪里找到 TwitterShare
。
将以下内容添加到您的 application.rb
config.autoload_paths << "#{Rails.root}/app/services"
然后重新启动 console
或 server
。
rails
现在应该能够找到 twitter_share.rb
并正确加载 TwitterShare
。
有关详细信息,请参阅 Autoloading and Reloading Constants。
我正在尝试创建一个服务对象以从 product.rb
AR 模型中提取一些方法,但由于某些原因我无法自动加载新的 TwitterShare
class .当我打开控制台并尝试 Product.last.twitter_share_text
之类的操作时,我收到 NameError: uninitialized constant Product::TwitterShare
错误。
这里发生了什么?我应该如何组织我的 folders/files?我必须告诉 rails 自动加载服务吗?这是当前代码:
app/models/product.rb
class Product < ActiveRecord::Base
def twitter_share_text
TwitterShare.new(name: self.name, oneliner: self.oneliner).return_text
end
app/services/twitter_share.rb
class TwitterShare
attr_reader .........
def initialize....
end
您需要让 rails
知道它可能在哪里找到 TwitterShare
。
将以下内容添加到您的 application.rb
config.autoload_paths << "#{Rails.root}/app/services"
然后重新启动 console
或 server
。
rails
现在应该能够找到 twitter_share.rb
并正确加载 TwitterShare
。
有关详细信息,请参阅 Autoloading and Reloading Constants。