0
0

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 1 year has passed since last update.

update メソッドはクラスメソッドとインスタンスメソッドがある

Last updated at Posted at 2021-11-03

開発環境

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

としても特定のレコードは更新できなかった。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?