使用railman ruby​​ on rails为current_user创建记录

时间:2019-06-21 06:30:47

标签: ruby-on-rails ruby postman rails-api

我确实有2个表用户和项目。当我尝试通过邮递员API创建商品时。我收到一个错误,即项目为零,因为它正在寻找current_user.items并导致我尝试创建项目时用户不是来自API。

    @item = current_user.items.build(item_params)

当我尝试从邮递员创建商品时如何验证身份并成为current_user的问题?

这是我要发送的API

 http://localhost:3000/api/v1/createitem

这是错误消息

    "exception": "#<NoMethodError: undefined method `items' for nil:NilClass>",

这是从命令行 enter image description here

此items_controller.rb

class Api::V1::ItemsController < ApplicationController
def createitem
  @item = current_user.items.build(item_params)
  if @item.save
    redirect_to listing_item_path(@item), notice: "Saved..."
  else
    flash[:alert] = "Something went wrong..."
    render :new
  end
end
def item_params
  params.require(:item).permit(:item_category, :item_condition,:item_name,:summary,:address,:price,:active, :instant)
end
end

错误发生在该行的items_controller.rb的第81行

    @item = current_user.items.build(item_params)

这是发送中的json

{"item_category": "Books & Magazines", "item_condition": "Used", "item_name": "Crushing it", "summary": "super awesome", "price": 20, "active": true,"instant": 1}

这是application_controller.rb

class ApplicationController < ActionController::API
include Authenticate
  rescue_from ActiveRecord::RecordNotFound, with: :render_404

  def render_404
   render json: { error: "Invalid ID", is_success: false}, status: 404
  end
 end

我确实有一个登录API,并且可以正常运行

http://localhost:3000/api/v1/login

1 个答案:

答案 0 :(得分:1)

首先,您必须定义/获取current_user。由于API与网络应用程序完全不同,因此它们无法处理会话,因为没有浏览器参与。因此,我们需要以不同的方式处理授权。

我假设您的登录API为登录的用户返回了一些唯一的令牌,除非您不必先实现该令牌。

您必须在标头中的每个API调用中传递该令牌,并验证该令牌以获取current_user

Read this以获取更多参考。