我有一个人们可以评论的网站,每个评论都有一个类别,他们可以从下拉菜单中选择。 在我的评论模式中我有
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]
知道为什么,以及我应该做些什么来避免那里的黑客攻击?
答案 0 :(得分:2)
您是否使用attr_protected
或attr_accessible
来阻止批量转移到category_id
?
如果是这样,那就是问题。