は、我々は二つのモデルを考えてみましょう:ActiveRecordコールバックまたはMySqlトリガー?
class Message < ActiveRecord::Base
belongs_to :user
has_many :statistics
end
class Statistic < ActiveRecord::Base
belongs_to :user
belongs_to :messages
end
Message
が:state
属性を持っており、それがStatistic
カウントに基づいて更新する必要があります(i.g. delivered_at、read_at)。つまり、メッセージがグループ内のすべてのユーザーに配信されると、それに応じて状態を更新する必要があります。
Statistics
コールバック(update_all)を呼び出さないクエリでsidekiqジョブでタイムスタンプが更新されたため、統計情報の 'after_update'コールバックにフックできず、Message.state
を更新しました。
統計表の更新トリガーの後にMySqlを使用していましたが、トリガーを呼び出す照会に結合先の表(メッセージ)があるため運がなかった。
お知らせください。
私は十分に明確だったと思っています。
ありがとうございます。
ありがとうございます! sidekiqコールバックはプロバージョンのみであると私は思う。 – Anton