0

我有一个 Rails 3 应用程序,我允许用户发帖。这些帖子还使用 Twitter gem 发布到他们的 Twitter 帐户中。

Posts 表内部有一个“验证”列,默认为 false,但是某些帖子将被标记为 true。我有这个,所以某些帖子必须由管理员用户验证。

下面是 schema.db 代码的样子:

create_table "posts", :force => true do |t|
    t.text     "content"
    t.integer  "user_id"
    t.boolean  "verify",          :default => false

这是我的控制器verify内部定义的方式:Posts

def verify
  @post = post.find(params[:id])
  @post.verify = false
  @post.save
  redirect_to "/verify"
end

我正在尝试在内部添加以下两行的变体,verify以便管理员可以使用它。它在发布帖子的用户调用它时起作用,但在管理员尝试时不起作用。我得到一个undefined method 'update' for nil:NilClass.

  @twitter_user = current_user.twitter_user
  @twitter_user.update(@post.content)

这是如何twitter_user定义的:

def twitter_user
    provider = self.authentications.find_by_provider('twitter')
    Twitter::Client.new(:oauth_token => provider.token, 
                        :oauth_token_secret => provider.secret)
  rescue
    return nil
  end

应该如何更改下面的代码,以便我可以将其放入内部verify以便管理员可以运行它,同时允许帖子转到每个发布者的 Twitter 帐户?

  @twitter_user = current_user.twitter_user
  @twitter_user.update(@post.content)
4

1 回答 1

0

鉴于您当前正在加载基于 的 twitter 用户current_user,如果您以管理员身份运行它,它可能会尝试将推文发布为属于管理员。您应该能够通过将用于发布推文的代码更改为:

@twitter_user = User.find(@post.user_id).twitter_user
@twitter_user.update(@post.content)
于 2013-04-15T03:25:15.793 回答