2012-05-18 32 views
1

我有一個(切下)模型,它看起來像這樣:如何在Rails的模型Twitter.update

class MyModel < ActiveRecord::Base 
    def self.update_status 
     event_time = time_ago_in_words 30.minutes.from_now 
     Twitter.update("Event is starting in #{event_time}") 
    end 
end 

正如預期的那樣,我得到一個NoMethodError例外,由於試圖用一個方法「time_ago_in_words '來自DateHelper。我該如何做到這一點,或許更重要的是,我是否以正確的方式開展這項工作?

+0

我假設'Twitter.update'在某人的Twitter帳戶上發佈了新推文? – Mischa

+0

是的,這是正確的。我已經刪除了這裏不需要的代碼。 – sudoash

回答

1
  1. 在模型extend ActionView::Helpers::DateHelper
  2. 變化30.mins.from_now30.minutes.from_now

我剛剛試了一下自己,有沒有問題做了以下內容:

class MyModel < ActiveRecord::Base 
    extend ActionView::Helpers::DateHelper 

    def self.update_status 
    event_time = time_ago_in_words(30.minutes.from_now) 
    Twitter.update("Event is starting in #{event_time}") 
    end 
end 

你必須使用extend代替include。有關說明,請參見this article

+0

1.我已經嘗試將這添加到我的模型中,除了方法和內部,我得到相同的錯誤。我不明白爲什麼因爲其他Stackoverflow問題提到相同的答案。來自「簡明英漢詞典」我在示例代碼中輸入錯了,對不起。 – sudoash

+0

我更新了我的答案。如果這不適用於您,請嘗試發佈更多詳細信息。 – Mischa

+0

我剛剛意識到自己的問題,並且無助於我在我的例子中又犯了一個重大錯誤。我的update_status方法實際上是self.update_status,所以當我運行MyModel.update_status時,我得到了NoMethodError。 – sudoash