模型未保存时在客户端获取错误文本
Getting error text on the client when a model does not save
我正在使用 Hyperstack.org 框架,因此使用 Opal 编译了 Ruby 代码。 Hyperstack 与 Rails 的集成在客户端创建了一些模型的表示,我对响应中的错误验证有疑问。
保存带有验证器的模型时,当其中一个验证器被触发时,我无法在承诺响应中获得完整的错误消息。
在此代码中:
@User.save(validate: true).then do |result|
if result[:success]
puts 'successs'
mutate @open = false
else
result[:models].each do |response_model|
puts "response_model.errors.class = #{response_model.errors.class}" #ActiveModel::Errors
puts "response_model.errors.full_messages = #{response_model.errors.full_messages}" #nothing puts
end
end
第一个放returns #ActiveModel::Errors
但是我好像无法使用那个模型的方法
我可以看到对此的测试:https://github.com/hyperstack-org/hyperstack/blob/a09bc601b3ad289c9f75156416ed39dff88059c9/ruby/hyper-model/spec/batch1/misc/errors_spec.rb#L340 所以我希望它能正常工作,而且一定是我!
此外,我注意到 JSON 对承诺的响应实际上包含错误消息:
{
"success" => false, "saved_models" => [
[227154, "User", {
"id" => 48,
"first_name" => "ds",
"last_name" => nil,
"email" => nil,
"image_src" => nil,
"date_of_birth" => nil,
"is_admin" => false,
"is_female" => false,
"is_enabled" => true,
"created_at" => "2019-03-23T12:29:05.728Z",
"updated_at" => "2019-03-23T12:29:05.728Z"
}, {
"last_name" => ["can't be blank"]
}]
], "message" => "HyperModel saving records failed!", "models" => [ < User: 0x37752(0x37750)[errors {
"last_name" => ["can't be blank"]
}] > ]
}
感谢任何帮助!
看起来您使用 full_messages
方法在 HyperModel 中遇到了错误。据我所知,所有其他方法在您的示例中都可以正常工作。
如果您查看 https://github.com/hyperstack-org/hyperstack/issues/143 如果您真的需要 full_messages
,可以应用一个变通补丁
我正在使用 Hyperstack.org 框架,因此使用 Opal 编译了 Ruby 代码。 Hyperstack 与 Rails 的集成在客户端创建了一些模型的表示,我对响应中的错误验证有疑问。
保存带有验证器的模型时,当其中一个验证器被触发时,我无法在承诺响应中获得完整的错误消息。
在此代码中:
@User.save(validate: true).then do |result|
if result[:success]
puts 'successs'
mutate @open = false
else
result[:models].each do |response_model|
puts "response_model.errors.class = #{response_model.errors.class}" #ActiveModel::Errors
puts "response_model.errors.full_messages = #{response_model.errors.full_messages}" #nothing puts
end
end
第一个放returns #ActiveModel::Errors
但是我好像无法使用那个模型的方法
我可以看到对此的测试:https://github.com/hyperstack-org/hyperstack/blob/a09bc601b3ad289c9f75156416ed39dff88059c9/ruby/hyper-model/spec/batch1/misc/errors_spec.rb#L340 所以我希望它能正常工作,而且一定是我!
此外,我注意到 JSON 对承诺的响应实际上包含错误消息:
{
"success" => false, "saved_models" => [
[227154, "User", {
"id" => 48,
"first_name" => "ds",
"last_name" => nil,
"email" => nil,
"image_src" => nil,
"date_of_birth" => nil,
"is_admin" => false,
"is_female" => false,
"is_enabled" => true,
"created_at" => "2019-03-23T12:29:05.728Z",
"updated_at" => "2019-03-23T12:29:05.728Z"
}, {
"last_name" => ["can't be blank"]
}]
], "message" => "HyperModel saving records failed!", "models" => [ < User: 0x37752(0x37750)[errors {
"last_name" => ["can't be blank"]
}] > ]
}
感谢任何帮助!
看起来您使用 full_messages
方法在 HyperModel 中遇到了错误。据我所知,所有其他方法在您的示例中都可以正常工作。
如果您查看 https://github.com/hyperstack-org/hyperstack/issues/143 如果您真的需要 full_messages