Rails 5 Api模型不保存字段

时间:2018-12-17 15:01:12

标签: strong-parameters rails-api

我有一个Rails 5.2 API,该API当前可以创建和验证用户(已在Postman中测试)。但是,我添加了另一个名为故事的模型,当我尝试创建新故事时,会创建一个故事,但仅保存id属性。

这是我的StoriesController:

class StoriesController < ApplicationController
  before_action :set_story, only: [:show, :update, :destroy]

  # GET /stories
  def index
    @stories = Story.all
    render json: @stories
  end

  # POST /stories
  def create
    @story = Story.new(story_params)
    if @story.save
      render json: @story, status: :created
    else
      render json: { errors: @story.errors.full_messages },
             status: :unprocessable_entity
    end
  end

  # GET /stories/:id
  def show
    render json: @story
  end

  # PUT /stories/:id
  def update
    @story.update(story_params)
    head :no_content
  end

  # DELETE /stories/:id
  def destroy
    @story.destroy
    head :no_content
  end

  private

  def story_params
    # whitelist params
    params.permit(:title, :category, :summary)
  end

  def set_story
    @story = Story.find(params[:id])
  end

end

这是邮递员的要求:

这是邮递员的输出: enter image description here

我认为这是一个参数问题,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

老兄,第3行的邮件有效载荷上有一个额外的开口支架 正确的json有效负载是:

{
  "story": {
    "title": "Spiderman"
    "category": "Superhero"
    "summary": "new spiderguy ftw"
  }
}

我认为您的story_params方法存在问题。故事属性“标题”,“类别”和“摘要”嵌套在“故事”中。

您可以尝试以下方法:

params.require(:story).permit(:title, :category, :summary)