1

Acts_as_auditedをテストしているときに、(ここでも説明されているように):with_associationsフラグがHABTM関係の監査テーブルエントリを生成しないことを発見しました。

例えば:

User < ActiveRecord::Base
  has_and_belongs_to_many: :groups
  acts_as_audited, with_associations: groups

Group < ActiveRecord::Base
  has_and_belongs_to_many: :users
  acts_as_audited, with_associations: users

(およびテストされたバリエーション、つまりwith_associationsあり/なし)

ソースでは、acts_as_auditedが行うのは、監査対象のテーブルにbefore_updateやafter_createなどのコールバックを追加することだけであることがわかります。どうやらこれらは結合テーブルに追加されていません。

私は次のようなモデルを作ってみました:

GroupsUsers < ActiveRecord::Base
  acts_as_audited

  after_save: :test

  def test
    logger.debug "test"
  end

ただし、ユーザーまたはグループでのCRUD操作の監査テーブルへの追加は表示されませんでした。ログの結合テーブルに作用するSQLステートメントを確認できるので、これは、通常のコールバックがバイパスされるように結合テーブルが内部的に変更されていることを示しています。

Is this true? Any suggestions for getting acts_as_audited to notice the join table or to log HABTM associations?

4

1 に答える 1