更新
我在下面回答了我的问题,但我仍然在寻求一种更漂亮的方式来实现我的目标。我有一种感觉,我的控制器对如何做事了解太多。
我的 VideoController 中有一个创建操作:
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
and保存视频thumb
...我在保存时收到此错误:
Validation failed: Thumb can't be blank, Thumb is invalid, Provider video can't be blank
我的猜测是该new
方法不接受额外的参数......