在我们的rails 3.2.12应用中,model project
需要在find_config_const
引擎中的模块authentify_utility.rb
中使用方法authentify
。在model project
,所以有
include Authentify::AuthentifyUtility
方法find_config_const
在model project
中调用为:
validates :sales_id, :presence => true,
:numericality => {:greater_than => 0} if find_config_const('project_has_sales', 'projectx') == 'true'
这是rspec中的错误:
project.rb:51:in `<class:Project>': undefined method `find_config_const' for Authentify::AuthentifyUtility:Module (NoMethodError)
在模块authentify_utility中,在方法定义之后,方法find_config_const的模块函数声明为(使方法可供其他人使用):
module_function :find_config_const
执行除此rspec错误之外的代码时没有错误。如何修复rspec的这个错误?这是rspec中的一个错误吗?谢谢你的帮助。
更新:
方法的定义
def find_config_const(param_name, engine=nil, version=nil)
const_value = nil
engineConfig = Authentify::EngineConfig.where(:engine_name => engine, :engine_version => version, :argument_name => param_name).first() if engine.present? && version.present?
engineConfig = Authentify::EngineConfig.where(:engine_name => engine, :argument_name => param_name).first() if engine.present? && version.blank?
engineConfig = Authentify::EngineConfig.where(:argument_name => param_name).first() if engine.blank? && version.blank?
const_value = engineConfig.argument_value unless engineConfig.nil?
const_value
end
答案 0 :(得分:1)
您能否显示find_config_const
的定义?
如果没有看到它,我最好的猜测是你不应该用模块名称调用方法,因为你在模型中#include它。
答案 1 :(得分:1)
您必须在spec_helper.rb
或您的规范中要求使用该模块:
require 'authentify/authentify_utility'