diff --git a/backend/app/controllers/posts_controller.rb b/backend/app/controllers/posts_controller.rb index cc5afea..e8cae00 100644 --- a/backend/app/controllers/posts_controller.rb +++ b/backend/app/controllers/posts_controller.rb @@ -177,8 +177,8 @@ class PostsController < ApplicationController merge = bool?(:merge) return head :bad_request if force && merge - base_version_no = nil - base_version_no = parse_base_version_no unless force + base_version_no = parse_base_version_no + return head :bad_request if !(force) && !(base_version_no) title = params[:title].presence tag_names = params[:tags].to_s.split @@ -442,9 +442,11 @@ class PostsController < ApplicationController def parse_base_version_no version_no = Integer(params[:base_version_no], exception: false) - raise ArgumentError, 'base_version_no は必須です.' unless version_no&.positive? - - version_no + if version_no&.positive? + version_no + else + nil + end end def post_snapshot_from_version version diff --git a/backend/app/services/version_recorder.rb b/backend/app/services/version_recorder.rb index fe7c368..8175dba 100644 --- a/backend/app/services/version_recorder.rb +++ b/backend/app/services/version_recorder.rb @@ -16,7 +16,7 @@ class VersionRecorder @record = record_class.unscoped.lock.find(@record.id) latest = latest_version - validate_version_sequence! latest + validate_version_sequence!(latest) attrs = snapshot_attributes @@ -27,7 +27,7 @@ class VersionRecorder version = version_class.create!( base_attributes(latest).merge(record_key => @record).merge(attrs)) - update_record_version_no! version.version_no + update_record_version_no!(version.version_no) version end @@ -47,7 +47,7 @@ class VersionRecorder end def update_record_version_no! version_no - @record.update_columns version_no: version_no + @record.update_columns(version_no:) @record.version_no = version_no end diff --git a/frontend/src/components/PostEditForm.tsx b/frontend/src/components/PostEditForm.tsx index 337ed08..d06b987 100644 --- a/frontend/src/components/PostEditForm.tsx +++ b/frontend/src/components/PostEditForm.tsx @@ -103,10 +103,16 @@ export default (({ post, onSave }: Props) => { e.preventDefault () setDisabled (true) - await update ({ id: post.id, title, tags, parentPostIds, - originalCreatedFrom, originalCreatedBefore }, - { baseVersionNo: post.versionNo }) - setDisabled (false) + try + { + await update ({ id: post.id, title, tags, parentPostIds, + originalCreatedFrom, originalCreatedBefore }, + { baseVersionNo: post.versionNo }) + } + finally + { + setDisabled (false) + } } useEffect (() => { @@ -114,7 +120,7 @@ export default (({ post, onSave }: Props) => { }, [post]) return ( -