スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい

 2020-11-08 【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい




今すぐ登録したい方へ


このブログから登録の多いエージェントは下記の3つです★

(リンクをクリックすると公式サイトに飛びます)

【ダントツの1位】フォスターフリーランス【案件保有数5000件以上。業界20年の超老舗】

【僅差で2位】エミリーエンジニア【4人に1人が初めてのフリーランス】

【惜しくも3位】Midworks(ミッドワークス) 【リモート案件が超豊富。正社員並みの保障アリ】




こんにちは、mah(@RailsRubyMah6h)です。


このブログでは、

僕が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: '作成しました' }
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




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★





あわせて読みたい


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech




最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★