Паранойя с принадлежа

В моем приложении пользователь has_many :jobs и работа belongs_to :user, Я использую драгоценный камень паранойи, чтобы мягко удалять пользователей и рабочие места.

Допустим, у меня есть пользователь, Джо, и у него есть задание "Сдвиг изменений". Я могу видеть все вакансии на моей странице листинга, используя Job.all, но как только я удаляю учетную запись Джо, я не вижу работу, используя Job.all больше.

Я пытался использовать Job.with_deleted.all а также пытался разобрать ассоциацию belongs_to :user, -> { with_deleted },

SQL-оператор производит:

SELECT "jobs".* FROM "jobs" INNER JOIN "users" ON "users"."id" = "jobs"."user_id" AND "users"."deleted_at" IS NULL WHERE "jobs"."deleted_at" IS NULL ORDER BY users.name ASC

3 ответа

Я знаю, может быть, уже слишком поздно, чтобы ответить на этот вопрос, но из моего опыта. Добавление include Mongoid::Paranoia к модели Job добавим deleted_at ассоциации вместо того, чтобы действительно удалять записи о работе. Кроме того, если вы хотите запросить удаленные задания, попробуйте использовать Job.unscoped.allили если хотите получить удаленное User из экземпляра задания попробуйте добавить метод

def user
  User.find(user_id)
end

Заменить user_id с вашим фактическим именем ключа, которое отображается на идентификатор пользователя.

Надеюсь, поможет!:)

Драгоценный камень Паранойи устанавливает область видимости по умолчанию для вашей модели, в которой значение удаленного атрибута, установленное с временными метками, не возвращается. Попробуйте открыть вашу модель как

User.unscoped.all

Кажется, вы установили dependent: :destroy у пользователя имеется много заданий, и это единственный способ, при котором удаление пользователя вносит изменения в has_many. вы не хотите, чтобы они были скрыты, а затем просто удалите зависимую::destroy из пользовательской модели на имеет много заданий

Другие вопросы по тегам