сухие рельсы как использовать проверку контракта
после добавления 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 рекомендует использовать сухую схему вместо сухой проверки.
Контракт, который вы упомянули, больше для оператора