【问题标题】:How do I allow a tweet to go through after an admin's approval?如何在管理员批准后允许推文通过?
【发布时间】:2013-04-15 11:25:15
【问题描述】:

我有一个 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)

【问题讨论】:

    标签: ruby-on-rails ruby twitter


    【解决方案1】:

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

    @twitter_user = User.find(@post.user_id).twitter_user
    @twitter_user.update(@post.content)
    

    【讨论】:

    • 我知道当管理员尝试运行它时它不应该是 current_user ......你的回答给了我undefined method 'user_id' for nil:NilClass。关于如何解决此问题的任何想法?
    • 您确定帖子已正确加载吗?在您的verify 方法中,您使用@post = post.find(params[:id]),您确定不应该是@post = Post.find(params[:id])(带有大写“P”)吗?
    • 是的,这些帖子肯定会正确加载;我不小心输入了小写字母。我只是想弄清楚如果管理员运行它们,如何让 @twitter_user 代码行工作
    • 假设.twitter_user 属于User 类,如果它是由用户或管理员运行的,它应该没有任何区别,对吧? undefined method 'user_id' for nil:NilClass 听起来像 @post 是 nil,对于管理员用户来说它是否也能正确加载?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多