2011-08-27 44 views
1

我有一個網站,人們可以評論,每個評論都有一個類別,他們可以從下拉菜單中選擇。 在我的評論模式我有活動記錄確實使用新/創建的所有字段

belongs_to :category 

,我必須在註釋表CATEGORY_ID。

當用戶提交參數中的評論我得到 params [:comment] = {「locale」=>「en」,「body」=>「fds」,「category_id」=> 2,「from_identifier 「=> 2130706433,」from_type「=>」ip「,」cookie_user_token「=>」130784267178572「,」user_id「=> 3}

這正是我想要的。然而,當我做

Comment.create(params[:comment]) 

我得到

#<Comment id: nil, from_type: "ip", from_identifier: 2130706433, cookie_user_token: 130784267178572, body: "fds", locale: "en", positive_vote_count: 0, adjusted_positive_vote_count: 0.0, negative_vote_count: 0, adjusted_negative_vote_count: 0.0, flag_vote_count: 0, adjusted_flag_vote_count: 0.0, impression_count: 0, visit_count: 0, rank: 137.0, created_at: nil, updated_at: nil, user_id: 3, category_id: nil> 

,你可以看到CATEGORY_ID爲零。

用戶模型與活動記錄有相同的關係,所以我不知道爲什麼會得到保存,category_id沒有。

現在我做

comm = Comment.create(params[:comment]) 
comm.category_id = params[:comment][:category_id] 

知道爲什麼,我應該做些什麼,以避免黑客那裏?

回答

2

您是否使用attr_protectedattr_accessible來防止質量分配到category_id

如果是這樣,那就是問題所在。

+0

啊我做到了!我錯誤地用attr_accessor。接得好!謝謝 :)! – Matilda