備忘録です。
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
to_iをしてあげることで、nilを0という数字として認識させることができ、計算ができます。
参考記事
https://qiita.com/lemtosh469/items/371544fa4fd3c333adf1
https://teratail.com/questions/19963