Я получаю не могу отличить Array к строковой ошибке при производстве, где я использую postgres, а в локальном я использую mysql. При создании определенных видео я получаю ошибку только при производстве.
В приведенном ниже коде videoid - это не что иное, как идентификатор видео YouTube, который я получаю от youtube
videoid = Video.parse_youtube(params[:video][:link]) if !params[:video].blank? and !params[:video][:link].blank?
if videoid
hash = video_info(videoid)
if !hash["errors"]
embed_code = "<iframe width=\"560\" height=\"315\" src=\"#{hash['embed']}\" frameborder=\"0\" allowfullscreen></iframe>"
@video = Video.new(:name=>hash["name"] , :embed_code=> embed_code, :link=> params[:video][:link], :youtube_id=> videoid, :current_views => hash["current_views"], :initial_views => hash["current_views"],:uploaded_date => hash["uploaded"],:category => hash["category"])
else
@video = Video.new
end
else
@video = Video.new
end
Я не понимаю, где проблема. Он работает в mysql, но не работает в postgres.
Если какая-либо из переменных, которые вы пытаетесь ввести в строковую переменную в базе данных, на самом деле являются массивами, или если hash ["embed"] является массивом, тогда вы получите ошибки в этой строке.
Моя личная рекомендация - выводить класс каждой переменной, которую вы вставляете сразу после строки "if! Hash [" errors "] '. Например, "puts hash [" embludes "]. Class 'будет печатать класс, и если это Array, это может быть вашей ошибкой.
Вы должны иметь возможность видеть ошибку довольно легко.