mailer作成 その15
メールの一括削除
メールのフィルターと同じようにリストの各行の先頭にチェックボックスを、またsubmitボタンをリストの終わりに追加。submitボタンが押されたら、コントローラのexec_deletion()メソッドを呼び出すようにした。
コントローラのexec_deletion()は、以下の通り。フィルターの処理より簡単。
def exec_deletion deleting_mails = Array.new params.each_key {|key| puts key if key =~ /^check_/ && params[key]["check"] == "1" id = key.sub("check_", "") mail = Mail.find(id) if mail != nil deleting_mails << mail end end } deleting_mails.each {|mail| mail.destroy } redirect_to("/list/list") end
でも、これだとguestでログインしてもメールを消すことができてしまう。
メールの閲覧制限
guestでログインしたときは、フィルターの操作ができなくて、指定されたフィルターが最初からかかっているようにしたらどうだろうか。
あるいは、フィルターを作成するときに、guestで閲覧可能なフラグを追加し、guestの場合のフィルターのデフォールトは、それらをORしたものにするとか。guestの場合に表示されるフィルターの一覧は、guestで閲覧可能なものだけにする。