ユーザ用ツール

サイト用ツール


tips:登録日と変更日のカラムを設ける

管理インターフェース mif の仕組みを使ったアプリケーションに、登録日と変更日のカラムを付け加える。
ここでは、モデルを定義しなくても良い程度の、ごくごく単純なエンティティーに対して、mifの仕組みだけで登録日と変更日のカラムを付け加えることについて説明する。モデルを定義する場合は、モデル内のCRUD各メソッドで登録日と変更日のアトリビュートを制御した方が良いと思う。

RDBを使う場合

実現方法は、フォームのhiddenアトリビュートとフィルターを使って、登録時には登録日と変更日双方を現在の日時にして、変更時には、変更日のみ現在の日時にする。

コンストラクタでフォームを次のように、hidden属性をつけて定義する。

  @form = AlForm.new( [
    ....
    AlTimestamp.new( "touroku_bi", :label=>"登録日", :hidden=>true, :filter=>"Time.now" ),
    AlTimestamp.new( "henkou_bi", :label=>"変更日", :hidden=>true, :filter=>"Time.now" ),
  ] )

更新実行アクションでは、登録日を更新されないようにしておく。

  def action_update_submit()
    @form.delete_widget( "touroku_bi" )
    super()
  end

リスト表示で、登録日、変更日を表示させたい場合、次のように定義する。

  def action_list()
    @form.widgets[:touroku_bi].hidden = false
    @form.widgets[:henkou_bi].hidden = false
    super()
  end

AlPersistFile を使う場合

AlPersistFileは、簡易的な機能しかないので上記方法ではうまくいかない。
hiddenタグで送られてきたデータを信じるやり方であまり良くないかもしれないが、以下の方法がある。

    AlTimestamp.new( "touroku_bi", :label=>"登録日", :hidden=>true, :filter=>"value.empty? ? Time.now : value" ),
    AlTimestamp.new( "henkou_bi", :label=>"変更日", :hidden=>true, :filter=>"Time.now" ),

この場合、action_update_submitのオーバーライドは不要になる。

tips/登録日と変更日のカラムを設ける.txt · 最終更新: 2011/02/15 13:09 by hirohito