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?