2012-09-12

ActiveScaffoldでmodelのデータ内容に応じて変更できたり、できなかったりする方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActiveScaffoldでmodelのデータ内容によって変更の可否を決めたい場合などのケースです。

たとえばあるモデルの状態が特定の値になったら変更できなくする場合です。

モデルにauthorized_for_update?という関数を定義しtrueを返せば変更ができてfalseを返すと変更ができなくなります。
class Sample < ActiveRecord::Base
  def authorized_for_update?
    if self.status < 99
      true
    else
      false
    end
  end
end

画面上では、変更できないレコードの変更ボタンがグレーになり利用できなくなっています。

authorized_for_update?をauthorized_for_delete?にすると削除できたり、できなかったりになります。

以下が参考になります。
https://github.com/activescaffold/active_scaffold/wiki/Security

ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ



コメントを投稿