当我在rspec测试中写下以下内容时:
post :create, :post_id => @post.id, comment: {author: @comment.author, comment_text: @comment.comment_text}
我得到了类似的东西:
{"comment"=>{"author"=>"", "comment_text"=>""},
"post_id"=>"8",
"controller"=>"api/v1/comments",
"action"=>"create"}
评论中传递给params
操作的create
是哪个。问题是"comment" => {}
我不想要那个。原因如下:
def comment_create_params
params.permit(:author, :comment_text, :parent_id, :archived)
end
它没有采用评论对象,而且当我发布到评论控制器时,它都按预期工作,创建了新评论并且生命是盛大的。那么如何写我的post
"陈述"这样它就不会创建一个"评论对象"在comment => {}
我在测试中得到的错误是422的响应代码,因为传递的控制器也不是控制器所期望的,所以它假定所需的字段是空白的,例如author
和{{1 }}
答案 0 :(得分:1)
不要允许评论参数。您可以为此创建不同的方法。它会像:
def post_create_params
params.require(:post).permit(:author, :content)
end
实际上,您应该要求实体:
def comment_create_params
params.require(:comment).permit(:author, :comment_text, :parent_id, :archived)
end