0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

act_as_paranoidで論理削除された子/親要素にアクセスできない時の対処方法

Last updated at Posted at 2021-09-23

概要

掲題の通りハマったので自分のためのメモも兼ねて記載しておきます。

前提

店舗とそこに紐づく店員を表現するアプリを作るとします。
親をshop,子をclerkというテーブル名で作成します。
そして子要素経由で、親要素の名前やIDにアクセスする際にはactive recordのjoinやreferencesではデータが取得できません。
なので以下のように別のリレーションとして設定してあげて取得できるようにしてあげてください。

親クラス shop

class Shop < ActiveRecord
  acts_as_paranoid

end

子クラス clerk

class Clerk < ActiveRecord
  acts_as_paranoid

  belongs_to :shop
  belongs_to :with_deleted_shop, -> { with_deleted }, class_name: 'Shop', foreign_key: :shop_id, inverse_of: :Shop

end

上記のように論理削除を含めたら親/子要素とのリレーションを指定してあげる事で、情報が取得できるようになります。

そもそも論理削除の導入にはかなり慎重になった方がいいと思います、、、

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?