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