Ben carrierwave hata ayıklama yaşıyorum. Eğlenceli. Sorunun bu aşağı gelir düşünüyorum:Regex eğlencesi. Bu regex dizgeme neden uymuyor?
if record.new_record? && record.send("has_#{attribute}_upload?") && record.key !~ record.send(attribute).key_regexp
#key_regexp kodu şudur: carrierwave_direct İçinde
bu kod var
ben hata ayıklama zaman bu kadar değerlendirir/\A#{store_dir}\/[a-f\d\-]+\/.+\.(?i)#{extension_regexp}(?-i)\z/
:
record.send(attribute).key_regexp
/\Astories\/\/main_images\/[a-f\d\-]+\/.+\.(?i)(jpg|jpeg|gif|png)(?-i)\z/
Benim store_dir şudur:
"hikayeleri/# {model.id}/main_images"
ve ben model.id sıfır olduğundan boş "/" bölümü var.
"/stories/main_imagescache/20160319-1549-2202-5826/blueapronimage.jpg"
Neden şu anda eşleşmiyor:
record.key bu nedir?
regex ekstra çizgi vardır ve bu bölüm ne olduğundan emin değilim gibi görünüyor:
[a-f\d\-]+\/.+\.(?i)(jpg|jpeg|gif|png)(?-i)
o af, rakam veya harf arasındaki herhangi bir sayıda mı "-" sonra, bir "/", sonra herhangi bir sayıdaki harf veya sayı, sonra bir". "....
(? i) nedir?
Yakalama grupları nedir?
(? -i) nedir?
record.key !~ /\Astories/
true
Yanlış olmalıdır:
bu sorun olduğunu düşünüyorum. Şuna
RegEx'inizi [RegExr] 'a yerleştirin (http://regexr.com/) veya [Regex101] (https://regex101.com /). Daha sonra parçaların üzerine gelin ve tam olarak ne yaptığını size söyleyecektir. Her ikisinde de, sizin için RegEx'i açıklayan bir * Açıklayıcı * bölümü vardır. – Druzion