Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

コンポーネントが削除できない #112

Open
isaozz opened this issue Oct 31, 2020 · 5 comments
Open

コンポーネントが削除できない #112

isaozz opened this issue Oct 31, 2020 · 5 comments
Labels
bug Something isn't working

Comments

@isaozz
Copy link

isaozz commented Oct 31, 2020

対象ドメイン/ The domain

  • kakogawa.diycities.jp

起こっている問題 / The Problem

  • 本番運用は始まっていますが、コンポーネント「【提案】1:市民のQOLや利便性を向上するサービス」は使用していないので削除しようとしたが削除できませんでした。

スクリーンショット / Screenshot

スクリーンショット 2020-10-31 16 52 31

期待する見せ方・挙動 / Expected Behavior

  • コンポーネント「【提案】1:市民のQOLや利便性を向上するサービス」を削除したい。

起こっている問題の再現手段 / Steps to Reproduce

  1. xxx
  2. xxx
  3. xxx

動作環境・ブラウザ / Environment

  • macOS
  • Chrome
@isaozz isaozz added the bug Something isn't working label Oct 31, 2020
@halsk
Copy link
Member

halsk commented Oct 31, 2020

本番でログを採取してみました。
大量にあるので、該当箇所を探すのが大変なのですが、このあたり?

D, [2020-10-31T08:32:09.914879 #20177] DEBUG -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5]   CACHE Decidim::ParticipatoryProcess Load (0.0ms)  SELECT  "decidim_participatory_processes".* FROM "decidim_participatory_processes" WHERE "decidim_participatory_processes"."decidim_organization_id" = $1 AND "decidim_participatory_processes"."slug" = $2 LIMIT $3  [["decidim_organization_id", 1], ["slug", "smartcity"], ["LIMIT", 1]]
D, [2020-10-31T08:32:09.918170 #20177] DEBUG -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5]    (2.8ms)  BEGIN
D, [2020-10-31T08:32:09.921678 #20177] DEBUG -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5]   Decidim::Proposals::Proposal Exists (2.9ms)  SELECT  1 AS one FROM "decidim_proposals_proposals" WHERE "decidim_proposals_proposals"."decidim_component_id" = $1 LIMIT $2  [["decidim_component_id", 2], ["LIMIT", 1]]
D, [2020-10-31T08:32:09.924654 #20177] DEBUG -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5]    (2.7ms)  ROLLBACK
I, [2020-10-31T08:32:09.925426 #20177]  INFO -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5] Redirected to https://kakogawa.diycities.jp/admin/participatory_processes/smartcity/components
I, [2020-10-31T08:32:09.925702 #20177]  INFO -- : [65ddb81c-db5f-4aad-8f9e-8ab9fba546f5] Completed 302 Found in 36ms (ActiveRecord: 20.5ms)
I, [2020-10-31T08:32:09.954619 #20177]  INFO -- : [1ead2ad2-8c11-4b2e-8e60-877107e4c2a9] Started GET "/admin/participatory_processes/smartcity/components" for 150.246.34.254 at 2020-10-31 08:32:09 +0000
D, [2020-10-31T08:32:09.960864 #20177] DEBUG -- : [1ead2ad2-8c11-4b2e-8e60-877107e4c2a9]   Decidim::Organization Load (2.9ms)  SELECT  "decidim_organizations".* FROM "decidim_organizations" WHERE "decidim_organizations"."host" = $1 LIMIT $2  [["host", "kakogawa.diycities.jp"], ["LIMIT", 1]]
D, [2020-10-31T08:32:09.966901 #20177] DEBUG -- : [1ead2ad2-8c11-4b2e-8e60-877107e4c2a9]   Decidim::User Load (3.2ms)  SELECT  "decidim_users".* FROM "decidim_users" WHERE "decidim_users"."type" IN ('Decidim::User') AND "decidim_users"."id" = $1 ORDER BY "decidim_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
D, [2020-10-31T08:32:09.967992 #20177] DEBUG -- : [1ead2ad2-8c11-4b2e-8e60-877107e4c2a9]   CACHE Decidim::User Load (0.0ms)  SELECT  "decidim_users".* FROM "decidim_users" WHERE "decidim_users"."type" IN ('Decidim::User') AND "decidim_users"."id" = $1 ORDER BY "decidim_users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]

ROLLBACKという文字は出ているのですが、肝心のエラー内容がよくわからず。
ログ出力の設定とかあるのかな。

ローカルでも試してみます。

@takahashim
Copy link
Collaborator

確かに該当箇所はそのあたりっぽいです。
decidim/decidim-admin/app/commands/decidim/admin/dectroy_component.rb のDecidim::Admin::DestroyComponentクラスのdestroy_componentメソッドにあるrun_before_hooksで失敗していて、その後のDecidim.traceability.perform_action!は実行されてないんじゃないかと思われます。

手元の開発環境で削除を試してみたところ、

  • db:seedで生成されたコンポーネントは削除できなかった
  • 新規で作ったコンポーネントは削除できた

という状況でした。
削除に成功できたときは、Decidim::Proposals::Proposal Exists (2.9ms) のような出力の次の行は、

PaperTrail::Version Create (73.5ms) INSERT INTO "versions" ("item_type", "item_id", "event", "whodunnit", "object", "created_at", "object_changes") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["item_type", "Decidim::Component"], ["item_id", 55], ["event", "destroy"], ["whodunnit", "gid://decidim-app/Decidim::User/1"], ["object", "{"id":55,"manifest_name":"proposals",【以下略】

という、PaperTrail::Versionの行が出力されています。

https://github.com/decidim/decidim/blob/88a0d6e21083952da20f98c5fb681d9f9684973d/decidim-proposals/lib/decidim/proposals/component.rb#L10-L12

  component.on(:before_destroy) do |instance|
    raise "Can't destroy this component when there are proposals" if Decidim::Proposals::Proposal.where(component: instance).any?
  end

を見ると、登録済みの提案の中身を消してからでないとコンポーネントを削除できないのかも?と思いました。

@isaozz
Copy link
Author

isaozz commented Oct 31, 2020

@takahashim
登録済みの提案の中身を消す方法がないんですよ。
なので、コンポーネント自体を消すしかないのかなと。

@takahashim
Copy link
Collaborator

そういうことなんですね…。なるほどです。そうなると、現状では容易には削除できないのかもしれません。

文脈は違うかもしれませんが、「archived」にする機能が欲しいという意見がありました。ここにもそういった、削除じゃないにしても見えなくする機能が期待されているような気がします。

さしあたりの暫定的な対応としては、コンポーネントの「設定」リンクから「コンポーネントを編集」を開いたときに表示される「重量」でソートされるようなので、ここを大きめの値に設定すれば下の方に表示されるので、さほど邪魔ではなくなるかも…というくらいです。

@halsk
Copy link
Member

halsk commented Nov 1, 2020

とりあえず、今やっているように公開サイトから見えなくはできるので、管理画面上はちょっと気持ち悪いですが、急ぎの対応は必要ないのなかなという理解です。
論理削除できるようにするのは結構ややこしいので、たしかにarchived できるといいですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants