【问题标题】:How to Twitter.update in Rails model如何在 Rails 模型中更新 Twitter
【发布时间】:2012-05-26 05:10:54
【问题描述】:

我有一个(缩减的)模型,如下所示:

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

正如预期的那样,由于尝试使用来自 DateHelper 的方法“time_ago_in_words”,我收到了 NoMethodError 异常。我应该如何做到这一点,也许更重要的是,我是否以正确的方式去做?

【问题讨论】:

  • 我假设 Twitter.update 在某人的 Twitter 帐户上发布了一条新推文?
  • 是的,没错。我已经删除了此处示例不需要的代码。

标签: ruby-on-rails twitter view model


【解决方案1】:
  1. extend ActionView::Helpers::DateHelper 在你的模型中
  2. 30.mins.from_now 更改为30.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 了解说明。

【讨论】:

  • 1.我已经尝试将它添加到我的模型、方法之外和内部,但我得到了同样的错误。我不明白为什么,因为其他 Stackoverflow 问题都提到了相同的答案。 2. 我在示例代码中打错了,对不起。
  • 我更新了我的答案。如果这对您不起作用,请尝试发布更多详细信息。
  • 我刚刚意识到我的问题,但在我的示例中又犯了另一个重大错误也无济于事。我的 update_status 方法实际上是 self.update_status,所以当我运行 MyModel.update_status 时,我得到了 NoMethodError。
  • 我已经修改了我的例子,很抱歉。
  • 您必须使用extend 而不是include。查看更新的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多