2010-06-03 73 views
0

我有一个简单的独立模型,它不从ActiveRecord或其他任何东西继承,称为SmsSender。顾名思义,它将短信发送到短信网关。Rails - 从ActiveRecord模型中访问模型类方法

我也有称为SmsMessage ActiveRecord模型,其具有称为deliver一个实例方法:

def deliver 
    SmsSender.deliver_message(self) 
    self.update_attributes :status => "Sent" 
end 

上面正在返回uninitialized constant SmsSender。我确信这很简单,但是如何从我的模型中访问SmsSender类?

+0

哪里是'被定义SmsSender' ?你的树中的实际文件在哪里?如果它在一个特殊的目录中,你是否将该目录添加到加载路径中? – x1a4 2010-06-03 16:03:57

+0

它在沼气标准模型路径中。在应用程序的其他地方,我可以从控制器访问SmsSender,并且工作正常。这部分功能被开发为与'delayed_job'一起使用,所以我不知道这对于什么或者没有加载有什么影响? – aaronrussell 2010-06-03 16:11:58

+0

啊,傻了!我只是发现了我的错误。我实际上称为SMSSender类(注意大写)和文件名“sms_sender.rb”。我相信Rails对这种事情很敏感。只需根据我的帖子将该类重命名为“SmsSender”,现在该类正在被正确加载。 – aaronrussell 2010-06-03 16:37:33

回答

0

Mabe ruby​​在当前类中查找SmsSender
尝试使用(全球)scope resolution operator::这样的:

def deliver 
    ::SmsSender.deliver_message(self) 
    self.update_attributes :status => "Sent" 
end 

还要确保为SmsSender文件包含(通过之一:需要,加载等)