
こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。
このブログでは、
僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、
ノウハウなどを書いていきます。
今回は、
- 【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい
について書いていきます。
【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい
デフォルトのcreateとupdateのままだと、
実現できないことが多々出てきます。
今回はその対応策について説明していきます。
結論
controller do〜endブロックの中で、
createなりupdateメソッドをオーバーライドすればOKです。
オーバーライドする際は、
リダイレクトの処理も書いてあげる必要があります。
ちなみに、
createもupdateも、
デフォルトのリダイレクト先は「showアクションのURL」です。
もしリダイレクトの挙動を変えたくない場合は、
ActiveAdminで生成されるshowのルーティングを指定すればOK。
- 例
def create
# TODO: 代入処理などする
if user.save!
redirect_to user_url(user), flash: { notice: '更新しました' }
end
end
また、
オーバーライドする場合は、
エラーの際の処理も追加してあげないと、
renderなりredirectせず、
画面が切り替わらない(204 no_contentになる)ので注意です。
# 成功したらshowへリダイレクト、失敗したらnewをrender
def create
# TODO: 代入処理などする
if user.save!
redirect_to user_url(user), flash: { notice: '作成しました' }
end
rescue => e
Rails.logger.error('#'*50)
Rails.logger.error(e.inspect) if e
Rails.logger.error(e.backtrace.join("\n")) if e && e.respond_to?(:backtrace)
Rails.logger.error('#'*50)
flash.now[:error] = e.inspect
render :new
end
RailsやRubyを学びたい人へ
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy
で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】
<- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy
は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。
