4

updated_atすべてのモデルのフィールドを使用して同期機能を作成する必要がある状況があります。ただし、ユーザー モデルの場合、updated_atユーザーがサインインするたびにフィールドが変更されます。さらに悪いことに、デバイスがユーザーの資格情報でサインインしてデータupdated_atフィールドを同期すると、同期が開始される前に変更されます。

それで、私の質問は、updated_atユーザーがサインインしたときにフィールドを更新するためにデバイスを停止できる方法はありますか?

4

3 に答える 3

8

これが私がしたことです: should_record_timestamps をオーバーライドしますか? Devise フィールドのみが更新されるときに updated_at 列を変更しないように、devise モデルのメソッドを使用します。これがコードで、Devise::Trackable と Rememberable を処理します。

  def should_record_timestamps?
    (self.changes.keys.map(&:to_sym) - (Devise::Models::Trackable.required_fields(nil) + [:remember_token, :remember_created_at])).present? && super
  end

これは、ユーザーがログインしたときにキャッシュを無効にしない優れた方法です。

于 2013-10-08T22:32:11.770 に答える