開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
編集機能の実装の際に
update アクションで
def update
Blog.update(para_permission)
redirect_to blogs_path
end
private
def para_permission
params.require(:blog).permit(:title, :content, :id)
end
として更新をしたところ
タイトル 内容
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
123 1233 一覧表示 編集 削除
要素が全て更新された。
原因は update メソッドをクラスに対して使ったため。
正しくは
def update
@blog = Blog.find_by(id: params[:id])
@blog.update(para_permission)
redirect_to blogs_path
end
private
def para_permission
params.require(:blog).permit(:title, :content)
end
こう
updateメソッドはクラスメソッドとインスタンスメソッドがあるっぽい
きちんと使いわけないと
また
def update
Blog.update(para_permission)
redirect_to blogs_path
end
private
def para_permission
params.require(:blog).permit(:title, :content, :id) ← 追記
end
としても特定のレコードは更新できなかった。