LoginSignup
2
0

やっぱりこっちでした。【Rails】フロントから指定したidが返ってこなかった場合、バックエンドで新しいidを作成してレコードを作成する

Posted at

前回書いた記事が糞コードで、もっと簡単に書けました。

find_or_initialize_byを使う

    def onair
        radio_item = SilsilRadio.find_or_initialize_by(id: 1)
        radio_item.update(radio_item_params)
        radio_item.save
        render json: radio_item
     end

      private

     def radio_item_params
       params.permit(:id, :radio_url)
     end 

find_or_create_byを使う

    def onair
        radio_item = SilsilRadio.find_or_create_by(id: 1)
        radio_item.update(radio_item_params)
        render json: radio_item
     end

      private

     def radio_item_params
       params.permit(:id, :radio_url)
     end 

find_or_initialize_byとfind_or_create_byの違い

find_or_initialize_by

新規作成をするが、保存まではしない。そのため、.saveが必要だった。

find_or_create_by

新規作成をし、保存までする。

最後に

いけた。

コード書きながら、長いな。だるいな。と思ったらもっと短く簡潔に書く方法があるというサインなのではないかと思ってきました。
簡単に書けるよと教えてくれた先輩に頭が上がりません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0