我怎么写这个不是评论键=>值

时间:2014-07-12 05:49:48

标签: ruby-on-rails rspec

当我在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 }}

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