Web + Life Hack

〜True But Useless〜

【rails】postしたパラメータをDBへ登録する時に心がけたい書き方

現在、弊社では新規にrailsアプリを作っています。

その際に実装したことを備忘録として残しておきたいと思います。

やりたいこと:
view側で渡したHash化されたパラメータを登録する
→登録内容は「:name,:detail,:status,:start_at, :end_at」


g08m11_tasks.controller.rb

def create
  @g08m11_task = G08m11Task.new(g08m11_task_params)
  @g08m11_task.user = current_user
  respond_to do |format|
   if @g08m11_task.save format.html {
     redirect_to g08m11_task_path, notice: t("messages.complete", action: t(["titles", controller_name, action_name].join("."))) }
    else format.html { render action: 'new' } format.json { render json: @g08m11_task.errors, status: :unprocessable_entity }
   end
 end
end
private
def g08m11_task_params
  return Hash.new unless params.key?(:user_task) 
  params.require(:user_task).permit(:name,:detail,:status,:start_at, :end_at,{:permission_ids=>[]})
end

覚えたい書き方はcreateする前にインスタンス生成の引数で
「g08m11_task_params」を指定して
そこに取得したパラメータを設定するということです。

他のソースを見てみると
red mine(https://github.com/redmine/redmine)は
引数にそのままparamsを指定する書き方にしていました。
特定のIDだけだからかもだけど二つ以上指定する場合は
privateメソッドとして作成して
実装していきます。

個人的な音楽:
最近やけにはまってます。
「自分の限界がどこまでかを知るために僕は生きてる訳じゃない。」ってフレーズが好きです。


【PV】 My Little Lover - Hello, Again ~昔からある場所~ - YouTube