【问题标题】:Rails with Grape API - relation id in params as a filterRails with Grape API - params 中的关系 id 作为过滤器
【发布时间】:2020-07-23 02:39:43
【问题描述】:

在我的 Rails/Grape API 应用程序中,我有一个端点,其中列出了所有用户注释。模型NoteActivity 模型具有可选关系(注释可以是活动的一部分,如下所示)。

class Note < ApplicationRecord
  belongs_to :user
  belongs_to :activity, optional: true
end

我的端点如下所示:

module Notes
  class Index < Base
    desc 'All user notes',
         success: { code: 200 },
         failure: [
           { code: 401, message: 'The access token is invalid' },
           { code: 401, message: 'The access token expired' },
           { code: 404, message: "Couldn't find Notes" },
         ]

    get do
      ::DetailedSerializer.new(
        Note.where(user_id: current_user.id),
      )
    end
  end
end

我想按活动过滤笔记(例如,仅显示 activities_id = 1 的笔记)。为此,我需要在参数中使用activities_id 作为过滤器,但我不知道此类操作的语法是什么,如何实现?

【问题讨论】:

    标签: ruby-on-rails ruby grape


    【解决方案1】:

    在你的葡萄 API 中获取参数的语法:-

    desc 'Your description.'
    params do
       requires :id, type: Integer, desc: 'Model ID.'
    end
    get do
       Model.find(params[:id])
    end
    

    所以根据你的代码:-

    class Index < Base
        desc 'All user notes',
             success: { code: 200 },
             failure: [
               { code: 401, message: 'The access token is invalid' },
               { code: 401, message: 'The access token expired' },
               { code: 404, message: "Couldn't find Notes" },
             ]
        params do
          optional :activity_id, type: Integer, desc: 'Activity filter.'
        end
        get do
         ## then you can use this id for filter in your query
          puts "activity_id ====> #{params[:activity_id]} " 
    
          ::DetailedSerializer.new(
            Note.where(user_id: current_user.id),
          )
        end
      end
    

    您可以将此参数设为optionalrequires :-

    params do
       optional :activity_id, type: Integer, desc: 'Activity filter.'
    end
    

    params do
       requires :activity_id, type: Integer, desc: 'Activity filter.'
    end
    

    【讨论】:

      猜你喜欢
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 2014-10-27
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多