我有一些不属于类或模型的实用方法。
保存此代码的好地方在哪里?我如何用模型调用它?
def get_api
Clickatell::API.authenticate(ENV['AP_ID'], ENV['PASSWORD'])
end
def send_sms(from, message)
begin
api = get_api
api.send_message(from, message)
rescue Exception => exc
logger.error(message + " " + "Message for the log file #{exc.message}")
render :text => "#{exc.message}", :status => 200
end
end
答案 0 :(得分:4)
将它放在一个类中,将此类放在/ lib文件夹中。然后,您可以将其添加到自动加载路径,如下所示:
config.autoload_paths += %W(#{config.root}/lib)
或者只需要在需要的地方使用它。
如果您包装的功能非常类似(是业务逻辑的一部分),则另一种方法也可以是编写模型。模型不一定必须与数据库表相关。 (虽然我会在下面使用子模块/模型来实现这种功能)
这适用于您在运行中添加的简单小事。如果你要添加更大的东西,那么可能是一个插件或引擎。
答案 1 :(得分:4)
您可以在“lib”目录下或lib的子目录下实现该模块。
在application.rb中,如果将autoload_paths修改为:
config.autoload_paths += Dir["#{config.root}/lib/**/"]
它会自动加载。
如果您不想更改配置,可以在模型文件的开头要求该文件。
require "relative_path_under_lib"