Skip to content

Handle saving while related record is loading #321

Open
@catmando

Description

@catmando

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:

          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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions