私のアプリではnote.rb
、以下に示すスキーマを使用しています。私がやろうとしているのは、メモを編集する機能を制限することです。基本的に、メモが過去 24 時間以内に作成されたものであれば、好きなように更新できます。24 時間後にできることは、remind_at
時間を変更することだけです。note.rb
メモが編集可能かどうかを確認するメソッドがファイルに含まれています。そうであれば、別のパーシャルを表示します。しかし、それはフロント エンドを制限するだけです。誰かが編集ウィンドウを開いたままにしたり、URL を入力したりした場合、24 時間後でもメモを編集できます。
私がやろうとしているのは、メモのbefore_update
更新が許可されているかどうかを確認するメソッドを作成することです。body
何があってもremind_at
時間を更新できます。問題の一部は、これが単に時間の変更であるかどうかをコントローラーが認識する方法remind_at
が経由params[:reschedule]
でありparams
、モデルでアクセスできないことです。
# == Schema Information
#
# Table name: notes
#
# id :integer not null, primary key
# body :text
# remind_at :datetime
# created_at :datetime
# updated_at :datetime
# Only allow editing of notes that are less that 1 day old
def editable?
self.created_at > (Time.now-1.day)
end