2013-04-15 42 views
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 

這是我Posts控制器內部是如何定義verify

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) 

回答

0

鑑於你目前正在裝載基礎上,current_user twitter的用戶,如果你運行它作爲一個管理它大概會嘗試發佈的tweet屬於管理員。您應該能夠通過改變使用的tweet發佈的代碼來解決這個問題:

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

我知道,當管理員嘗試運行它...它不應該是CURRENT_USER你的答案給了我'未定義方法'user_id'爲nil:NilClass'。關於如何解決這個問題的任何想法? – user2159586

+0

你確定這篇文章是正確加載嗎?在你的'verify'方法中,你使用'@post = post.find(params [:id])',你確定不應該是'@post = Post.find(params [:id])'(with大寫'P')? –

+0

是的帖子肯定是正確加載;我不小心將它輸入小寫。我只是想弄清楚如果管理員運行'@ twitter_user'代碼行就可以工作 – user2159586

相關問題