QA@IT

ruby on rails 動画投稿サイト

3865 PV

Ruby on Rails で動画投稿サイトを構築しています。
deviseでログイン機能を実装し、ユーザーネームとメールアドレスどちらでもログインできるようにしています。 そして、自分だけの動画を削除できるようにしたいのですがわかりません。。。
投稿者のユーザーネーム=ログインしているユーザーネームの時に削除できるという風にしたいです。
動画をアップロードする際に、ログインしているユーザネームを一緒に受け取るようにするにはどうすればよいですか?
少しでもわかる方がいましたらお願いします。

回答

まず、動画の投稿者を保存できるようにします。動画を Movie モデル、ユーザを User モデルとして、Movie#poster で投稿者を返すようにするには以下のようにモデルを定義します:

class Movie < ActiveRecord::Base
  belongs_to :poster, class_name: 'User'
end

class User < ActiveRecord::Base
  has_many :movies, foreign_key: 'poster_id'
end

動画を投稿するアクションで、動画と同時に投稿者を保存するようにします。Devise では current_user で現在ログイン中のユーザが取れますので、以下のように書けます:

@movie = Movie.create!(...) {|movie|
  movie.poster = current_user
}

あとはビューやアクションの中で Movie#postercurrent_user かどうかをチェックしてあげればよいです。

movie = Movie.find(...)
movie.poster == current_user #=> 投稿者本人のとき true
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。