hyperstack-org / hyperstack-org/hyperstack

Handle saving while related record is loading

未关闭
#321 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug
主要语言
JavaScript
星标
538
派生
41
PR 合并指标
30 天内没有已合并 PR

描述

Currently if an record or one of its relationships is loading when you try to save the record, an error will be raised.

This is due to the following lines in the `gather_records` method:

```ruby
if record.id.loading? and record_being_saved
raise "Attempt to save a model while it or an associated model is still loading: model being saved: #{record_being_saved.model}:#{record_being_saved.id}#{', associated model: '+record.model.to_s if record != record_being_saved}"
end
```

Instead of aborting this way the whole activity needs to be wrapped in a promise, that will wait until such records are loaded, and then continue. Note that putting this into a promise is not a problem as the `save` operation is already asynchronous (and returns a promise)

Probably a full rewrite of the `gather_records` and associated methods would be best, HOWEVER, this is real tails case, and so at least in the short term a "brute" force approach where any `record.id` that is loading is put into a list, and then we wait for all the items to be loaded, and then retry the whole save.

Currently there is no one work-around. What you need to do is have code that waits until the related things are loaded before, proceeding with the save.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。