私はcarrierwaveをデバッグしています。それは楽しいです。私は、問題はこれに尽きると思う:Regex fun。なぜこの正規表現は私の文字列にマッチしないのですか?
if record.new_record? && record.send("has_#{attribute}_upload?") && record.key !~ record.send(attribute).key_regexp
#key_regexpコードはこれです:carrierwave_directインサイド
、このコードがあります
私は、デバッグしていたときに、このと評価さ/\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/
私store_dirはこれです:
"の物語/#{} model.id/main_images"
と私はmodel.idがnilであるため、空白 "/" セクションがあると思います。
"/stories/main_imagescache/20160319-1549-2202-5826/blueapronimage.jpg"
なぜそれが現在一致していません:
record.keyはこれですか?そして、 " - 「」
[a-f\d\-]+\/.+\.(?i)(jpg|jpeg|gif|png)(?-i)
それはAF、数字、または間の任意の数の文字です:正規表現は、余分なスラッシュを持っていると私は何をこのセクションがあることはよく分からないように見えます
/"、任意の数の文字または数字、"。 "....
(?i)とは何ですか?
キャプチャグループとは何ですか?
(?-i)とは何ですか?
私は、これが問題だと思う:
record.key !~ /\Astories/
true
それはfalseにする必要があります。この時
[RegExr](http://regexr.com/)または[Regex101](https://regex101.com) /)。部品の上にマウスを置くと、それが何をするかが正確に伝えられます。彼らはどちらも*あなたのためのRegExを説明する* Explain *セクションを持っています。 – Druzion