👻

投稿内容を複製する(自分の本棚に教材を保存する)

2024/03/06に公開

内容

PF作成の時にメンターさんに教えて頂いたことをいつもで引き出せるように書いておこうと思います。
誰かが投稿した内容を他の誰かが引用したい場合に使える内容です。

StudiesController.rb

    :
  def copy
    original = Study.find(params[:study_id])
    copy = original.dup
    copy.user_id = current_user.id
    copy.image.attach(original.image.blob)
    copy.save
    redirect_to studies_path
  end

copyメソッドを作成しました

original = Study.find(params[:study_id])
まずはコピー元を変数に代入します。

copy = original.dup
dupメソッドで、originalの複製を作成し、変数に代入します。全く同じの新しいオブジェクトが作成されます。

copy.user_id = current_user.id
copyのユーザーIDに現ユーザーIDを紐づけます

copy.image.attach(original.image.blob)
copyにoriginalの画像を引っ張ってきます

copy.save
copyをデータベースに保存します

redirect_to studies_path
自分の本棚に移動します

routes.erb

   :
resources :studies do
  get "copy", to: "studies#copy"
end
    :

コントローラーに作成したcopyメソッドへのルートを作成します

show.html.erb

   :
<span><%= link_to "本棚に教材を登録", study_copy_path(@study) %></span>
    :

copyメソッドの呼び出し元を作成します

まとめ

今回の場合、他の人が勉強している教材を気に入ったら自分の本棚に保存できるようにしたいと思い実装しました。
ただ、その場合だと複製ではなく、ひとつの教材を複数のユーザーが持てるように出来た方が良いなと思いました。
後々、ブラッシュアップ出来たらと思います。

Discussion