2010-06-03 70 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文件包含(通過之一:需要,加載等)