palkan / logidze

Database changes log for Rails
MIT License
1.6k stars 76 forks source link

reload_log_data doesn't work when used with acts_as_paranoid and deleted records #237

Open matgaw opened 1 year ago

matgaw commented 1 year ago

Tell us about your environment

**Ruby Version:3.0.5

**Rails Version:7.0.4

**PostgreSQL Version:13.9

**Logidze Version:1.2.3

What did you do?

Using logidze and acts_as_paranoid in one project. When record is marked as deleted with acts_as_paranoid, and I load it like so:

obj = SomeObject.with_deleted.find(some_id)

and then execute:

obj.reload_log_data

What did you expect to happen?

log_data gets loaded

What actually happened?

The query is affected by acts_as_paranoid and adds WHERE "some_objects"."deleted_at" IS NULL - resulting in log_data being null.

Not sure how to work-around it, or which gem should actually fix it.

matgaw commented 1 year ago

Actually I think this should be reported to acts_as_paranoid gem

palkan commented 1 year ago

I think, you posted issue in the right place.

We do not take scopes into account when reloading the log data: https://github.com/palkan/logidze/blob/fc891d83acbaf1179a98a5963994663f0a142eb8/lib/logidze/model.rb#L219

Adding .unscoped here makes senses. Or, probably, add an option to reload without taking default scopes into account: record.reload_log_date(unscoped: true)