はじめに
NotionRubyMapping 解説の第30回目です。これまで様々なブロックを紹介してきました。一通り終わったので、ブロックのアーカイブについて説明します。今日の作業ページはこちらです。
あらかじめページを取得しておきます。
irb(main):002> page = Page.find "https://hkob.notion.site/block-destroy-213dc754543a4a5d97a8b16b667ea6de?pvs=4" => NotionRubyMapping::Page-213dc754543a4a5d97a8b16b667ea6de
block.destroy
ブロックの削除をテストするために事前にいつかのブロックをページに追加しておきます。
irb(main):003> b1 = page.append_block_children NumberedListItemBlock.new("First") => NotionRubyMapping::NumberedListItemBlock-20976035a15f41af85cc0fbe6ea734ef irb(main):006> b2 = page.append_block_children NumberedListItemBlock.new("Second") => NotionRubyMapping::NumberedListItemBlock-7cf40bdfd2c64916a85c757c4745f558
実行した結果以下のような二つの番号付き箇条書きブロックが作成されています。
一つ目のブロックを削除するには、destroy メソッドを呼び出します。普段は返り値を気にすることはないので、再代入することはないのですが、設定によって内容が変わったことを確認するために b1 を上書きしました。
irb(main):007> b1 = b1.destroy => NotionRubyMapping::NumberedListItemBlock-20976035a15f41af85cc0fbe6ea734ef
実行すると以下のように First が消えています。
実は削除はすぐに消えるわけではなく、ブロックの archived 属性を true にするだけです。
irb(main):023> b1.archived => true
Notion API 的にはこのフラグを false に戻してアップデートするとブロックを復元することができます。ただ、NotionRubyMapping ではその仕組みを作っていませんでした。archived を false にして update するというのは一般の人にはわかりにくいので、せっかくなので、b1.restore
くらいの専用メソッドを用意するのがよさそうです。これも ToDo に入れておきます。
おわりに
今回は block.destroy
を解説してみました。削除したブロックの復元は NotionRubyMapping では実装していなかったので、後で restore メソッドを作成したいと思います。
block.destroy のマニュアルはこちらです。