Ruby on rails 带有GrapeAPI的Rails-params中的关系id作为筛选器

Ruby on rails 带有GrapeAPI的Rails-params中的关系id作为筛选器,ruby-on-rails,ruby,grape,Ruby On Rails,Ruby,Grape,在我的Rails/GrapeAPI应用程序中,我有一个端点,列出了所有用户注释。模型注释与活动模型具有可选关系(注释可以是活动的一部分,如下所示) 课堂笔记

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

课堂笔记
我的端点如下所示:

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
模块注释
类索引<基
描述“所有用户注释”,
成功:{code:200},
失败:[
{代码:401,消息:'访问令牌无效'},
{代码:401,消息:'访问令牌已过期'},
{代码:404,消息:“找不到笔记”},
]
动手
::DetailedSerializer.new(
注:其中(用户标识:当前用户标识),
)
结束
结束
结束

我想按活动筛选注释(例如,仅显示
活动的注释\u id=1
)。为此,我需要使用params中的
活动\u id
作为过滤器,但我不知道这种操作的语法是什么,如何实现这一点?

在grape API中获取params的语法:-

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

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
params do
   optional :activity_id, type: Integer, desc: 'Activity filter.'
end
params do
   requires :activity_id, type: Integer, desc: 'Activity filter.'
end