2014-03-24 28 views
0

這是目前我喜歡錶:如何有插在不同的表user_ID的(不,不是foregin鍵)

Like Load (0.4ms) SELECT "likes".* FROM "likes" 
    +----+------------+-------------------------+-------------------------+---------+ 
    | id | article_id | created_at    | updated_at    | user_id | 
    +----+------------+-------------------------+-------------------------+---------+ 
    | 1 | 1   | 2014-03-24 19:07:59 UTC | 2014-03-24 19:07:59 UTC |   | 
    | 2 | 2   | 2014-03-24 19:18:59 UTC | 2014-03-24 19:18:59 UTC |   | 
    | 3 | 4   | 2014-03-24 19:19:14 UTC | 2014-03-24 19:19:14 UTC |   | 
    | 4 | 9   | 2014-03-24 19:47:36 UTC | 2014-03-24 19:47:36 UTC |   | 
    +----+------------+-------------------------+-------------------------+---------+ 
    4 rows in set 

正如你所看到的,這不是在USER_ID填寫信息時,他們喜歡的文章。

如何在上表中填寫該信息?

這是目前在ArticleController類似方法:

def like_vote 
    @article = Article.find(params[:id]) 
    @article.likes.create 
    redirect_to(article_path) 
    end 

我在搞清楚如何在上述的方法,以便插入USER_ID那種迷茫中,LIKE表存儲他們的USER_ID。

幫助?

在這種情況下,需要:這是視圖

 <td><%= pluralize(article.likes.count, "like") %></td> 
     <td><%= button_to '+1', "/articles/#{article.id}/user/#{current_user.id}/like_vote", method: :post %></td> 

回答

0

您應該建立在user_id,例如:

@article.likes.create(user_id: current_user.id) 
+0

嘿感謝您的回答!有用。不過,如果你不介意的話,我有一個問題。我真的很困惑'user_id:current_user.id'爲什麼一個人不得不寫這個東西呢?我一直都在看,但我從來沒有完全明白。我的意思是,爲什麼不能'current_user'工作?你有我的問題嗎? – user273072545345

+0

當你創建一個新的對象時,你只需要傳遞屬性來構建實例,在你的情況下,一個'Like'實例需要'article_id'(由@ article.likes.create'自動設置)和'user_id' (把它作爲參數傳遞),就是這樣。這是相同的:Like.create(article_id:@ article.id,user_id:current_user.id) – markets

+0

所以在參數中傳遞它的方式是將它放在括號中? – user273072545345

相關問題