2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby On Rails】update_columnを使って、計算した結果をinteger型のカラムへ更新する方法

Last updated at Posted at 2021-01-08

備忘録です。

updateとupdate_columnについて

テーブル内の情報を更新する際に、レコードを更新したい場合はupdateメソッドを使います。
しかし、特定のカラムだけを更新したい場合は、updateは使えません。
そこで、update_columnを使用します。

使用例

前提として、usersテーブル:post_countという投稿回数をカウントするinteger型のカラムがあることとします。

ユーザーが投稿する度に、投稿回数(=post_count)が加算されていくものは以下の通りです。

    sum = current_user.post_count.to_i + 1
    current_user.update_column(:post_count, sum.to_i)

初期値がnilの場合もしっかりと足し算ができるように、to_iを付けています。
カラムがnilの状態で、to_iを付けずに実行すると以下のようなエラーが出ます。

undefined method `+' for nil:NilClass
スクリーンショット 2021-01-08 19.27.43.png

to_iをしてあげることで、nilを0という数字として認識させることができ、計算ができます。

参考記事

https://qiita.com/lemtosh469/items/371544fa4fd3c333adf1
https://teratail.com/questions/19963

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?