dry-rails如何使用合同验证



在将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来运行验证?

当我理解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建议使用dry模式而不是dry验证。

你提到的合同更多的是针对运营商

最新更新