сухие рельсы как использовать проверку контракта

после добавления gem dry-rails в мое приложение rails я определил контракт:

      module Users
  module Contracts
    class New < ApplicationContract
      params do
        required(:todo).schema do
          required(:title).filled(:string)
          required(:items).array(:hash) do
            required(:name).filled(:string)
          end
        end
      end
    end
  end
end

Но я не знаю, как заставить работать этот контракт. Скажем, у меня есть контроллер с именем UsersController:

      module Api
  module V1
    class UsersController < ApplicationController
      before_action :set_user

      private
      def set_user
        @user = User.find(params[:user_id])
      end
    end
  end
end

как я могу заставить этот контроллер использовать контракт New для запуска проверки?

1 ответ

Когда я правильно понимаю пример на https://github.com/dry-rb/dry-rails/blob/v0.5.0/spec/dummy/app/controllers/users_controller.rb , вам нужно позвонить safe_paramsвместо params

Конкретно safe_params.success?или же safe_params[:id]

Кроме того, на «границе HTTP» dry рекомендует использовать сухую схему вместо сухой проверки.

Контракт, который вы упомянули, больше для оператора

Другие вопросы по тегам