在测试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 语句,因此这表明连接表在内部以绕过正常回调的方式进行了更改。
这是真的?关于让acts_as_audited 注意到连接表或记录HABTM 关联的任何建议?