活动记录确实使用new / create中的所有传入字段

时间:2011-08-27 02:38:36

标签: ruby-on-rails activerecord

我有一个人们可以评论的网站,每个评论都有一个类别,他们可以从下拉菜单中选择。 在我的评论模式中我有

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]

知道为什么,以及我应该做些什么来避免那里的黑客攻击?

1 个答案:

答案 0 :(得分:2)

您是否使用attr_protectedattr_accessible来阻止批量转移到category_id

如果是这样,那就是问题。