PostとAuditLogの2つのモデルがあります。これらは互いに関連付けられていないため、投稿が削除された後にAudiLogモデルでアクションをトリガーしたいと思います。投稿が保存され、after_save
がうまく動作するが、after_destroy
は保存されていないので、AuditLogモデルで起こるポストモデルでは、他のコールバックもある。だから、After_destroyは機能しません
class Post < ApplicationRecord
after_save :confirm_audit_log, if: :submitted?
after_destroy :say_goodbye
private
def confirm_audit_log
audit_log = AuditLog.where(user_id: self.user_id,
start_date: (self.date - 7.days..self.date)).last
audit_log.confirmed! if audit_log
end
def say_goodbye
"Goodbye!"
end
end
私が見るべきである投稿を削除した後に「さようなら」が、私は
Post.last.destroy
を行う際のポストインスタンスがデータベースから削除されますが、コールバックが呼び出されません。なぜ私に説明していただけますか?
UPDATE: 私はafter_destroyでこのmetodに変更されました:
def unconfirm_audit_log
audit_log = AuditLog.where(user_id: self.user_id,
start_date: (self.date - 7.days..self.date)).last
audit_log.pending!
end
、それが呼び出されることはありませんです。私はuncofirm_audit_logメソッドの中にデバッガを置こうとしましたが、それはそこに届くことさえありません。
あなたはレールとルビーのどのバージョンを使用していますか? – imechemi
'投稿を削除した後、「さようなら」と表示されるはずです - あなたは「さようなら」のテキストを印刷せず、メソッドから返すだけです。 ''さようなら」を試してみてください。 –
'after_destroy:unconfirm_audit_log'を' Post'モデルに追加しましたか? –