Где перечислить неаудированные столбцы в приложении Rails 5.2 с проверенным гемом? - PullRequest
0 голосов
/ 04 мая 2020

Я открываю драгоценный камень Audited, который значительно упрощает аудит моего приложения. Но у меня все еще есть сомнения по поводу аудита действий, связанных с аутентификацией пользователей (предоставленных Devise).

По крайней мере, я хотел бы удалить из журнала столбцы, связанные с аутентификацией, принадлежащие пользовательской модели. Я пытался:

User.non_audited_columns = [:encrypted_password, :reset_password_token, :confirmation_token, :unlock_token]

, но я не уверен, куда поместить это утверждение? Это не действует, когда в контроллере приложений, и сервер не запускается, когда в Audited Intializer, из-за разработки отсутствующих классов.

Где должен иметь место этот тип конфигурации? Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: для аудита всех моделей, я фактически вставил «аудированный» оператор в определение класса ApplicationRecord:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
  include PgSearch::Model
  audited
---

А теперь на основе Хажира и Виджаджайда Рекомендация, я пытаюсь переопределить его в модели User:

class User < ApplicationRecord
extend CsvHelper
  # Audit trail setup
  audited except: [:encrypted_password, :reset_password_token, :confirmation_token, :unlock_token]
---

В результате, когда 'audited' требуется только в модели User, включая список исключений, он работает должным образом. Но когда они объявлены в ApplicationRecord и переопределены в пользовательской модели, исключения игнорируются.

Можете ли вы порекомендовать рабочий синтаксис для переопределения аудита, включая исключения столбцов?

Или вы бы порекомендовали применить «аудированный» соответственно для каждой соответствующей модели?

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 04 мая 2020

из этой документации вы можете указать столбец следующим образом

class User < ActiveRecord::Base
  # All fields
  # audited

  # Single field
  # audited only: :name

  # Multiple fields
  # audited only: [:name, :address]

  # All except certain fields
  # audited except: :password
end

для вашего случая, вы можете добавить в модель пользователя, как следует

class User < ActiveRecord::Base

  audited except: [:encrypted_password, :reset_password_token, :confirmation_token, :unlock_token]

end
...