前回書いた記事が糞コードで、もっと簡単に書けました。
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
新規作成をし、保存までする。
最後に
いけた。
コード書きながら、長いな。だるいな。と思ったらもっと短く簡潔に書く方法があるというサインなのではないかと思ってきました。
簡単に書けるよと教えてくれた先輩に頭が上がりません。