Webuilder240

self_updated_atがメソッド指定に対応しました

2018-01-15 17:00:00 +0900

先日紹介した、拙作のself_updated_atなのですが、 この度v0.2.0へアップデートしたので、こちらの更新情報をお伝えします。

self_updated_atがどういうGemかよくわからんという人はこの記事を読んでみてください。 webuilder240.hatenablog.com

下記は更新内容について記載しました。

パラメータにmethodsを追加しました。

  • methodsはcolumnsよりも後にチェックされるもので、指定したもののどれかが真を返す場合、指定したカラムの日付を更新します。
  • methodsで指定されたものすべての結果が偽の場合は指定カラムの日付更新を行いません。

github.com

methodsのSyntaxについて

class Post

  self_updated_at, :service_updated_at, methods: [:true_method]

  private

  def true_method
    true
  end

end

上記コード例の場合、 「true_method」が真だった場合に「service_updated_at」カラムの更新日が更新されます。

もちろん、methodsとcolumnsを組み合わせても利用できます。

class Post

  self_updated_at, :service_updated_at, columns: [:title], methods: [:true_method]

  private

  def true_method
    true
  end
  
end

上記コード例の場合、 「title」カラムが更新された場合もしくは、「true_method」が真だった場合に「service_updated_at」カラムの更新日が更新されます。 式の評価は、columnsを優先して行います。

その他の細かい修正

  • self_updated_atの指定カラムに作成時に日時を設定した場合、その日時を優先して反映するようにしました。作成時に指定カラムがnilだった場合は現在日時を設定します。

ActiveRecordのVersionが5.1以上の場合に発生するDEPRECATION WARNINGへの対応

元々、xxxx_charged?メソッドを利用してModelの変更を検知していたのですが、ActiveRecordが5.1以降の場合、 近い将来廃止予定らしく、DEPRECATION WARNINGが発生したので移行予定のメソッドを利用するように修正を行いました。

github.com

今後について

機能面はもうこれで自分のケースは満たしていると思ってて、あんまりProcとかLambdaをサポートする意欲はないかも。 Specをある程度リファクタリングして、READMEを英語で書いた段階で、v1.0.0をリリースしちゃうかも。

関連しそうなブログ