

通知機能で過去にチェックをしているか、いないかの確認の為にboolean型のcheckというカラムを通知(Notification)テーブルに入れています。  
Notificationコントローラの表示箇所で、checkがfalseの新着通知を開いたらtrueに切り替わるようにしたいのですが、そこでエラーが発生しました。

エラー箇所はNotification_controller.rbのindexのチェックの切り替えを行うコードです。

[code]

    @notifications.where(checked: false).each do |notification|
              notification.update_attribute(checked: true)
            end
    
[/code]

エラー内容は

[code]

    ArgumentError in NotificationsController#index
    wrong number of arguments (given 1, expected 2)
    Extracted source (around line #6):
                  
            #通知画面を開くとcheckedをtrueにして通知確認済にする
            @notifications.where(checked: false).each do |notification|
              notification.update_attribute(checked: true)　　　←ここの箇所
            end
        end
        
    
[/code]

バージョン  
Ruby on Rails6

他に関連するであろうコードがあると思う方は、編集で追記させて頂きますので拝見して頂けたらと思っております。


CC BY-SA 4.0
2023-05-30T07:51:46.833
95022
2023-05-30T13:45:26.377
58130
question
ruby-on-rails ruby
booleanの切り替え


<https://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-
update_attribute>

`update_attribute(checked, true)`のように使うのが正しいと思われます。


CC BY-SA 4.0
2023-05-30T08:47:53.953
95023
2023-05-30T08:47:53.953
442
95022
answer


notification.update_columns(checked: true)でtureに切り替えることが出来ました。


CC BY-SA 4.0
2023-05-30T13:45:26.377
95028
2023-05-30T13:45:26.377
58130
95022
answer