アップデート
以下の質問に答えましたが、目標を達成するためのより良い方法を求めています. コントローラーが物事のやり方を知りすぎているような気がします。
VideoController に create アクションがあります。
def create
method = 'get_' + params[:video][:provider] + '_video_id'
provider_video_id = Video.send(method, params[:video][:url])
thumb = Video.get_thumb_from_youtube(provider_video_id)
@video = Video.new(params[:video], :provider_video_id => provider_video_id, :thumb => thumb, :views => 0, :likes => 0)
if @video.save!
redirect_to video_path('1'), notice:'Video added successfully.'
else
render :new
end
end
ユーザーが入力したフォームから情報を取得してVideo.new を呼び出しますparams[:video]
。次に、ユーザーがフォームで渡した URL を操作して、 と を復元しvideo_provider_id
ますthumb
。
ただし、Railsはビデオを保存していませんprovider_video_id
...thumb
保存時にこのエラーが発生します:
Validation failed: Thumb can't be blank, Thumb is invalid, Provider video can't be blank
私の推測では、new
メソッドは追加のパラメーターを受け入れません...