3

ありふれたペーパー クリップのようなコードがあります。

has_merchants_attached_file :pdf,
    storage:          :s3, 
    s3_credentials:   Mbc::DataStore.s3_credentials,
    s3_permissions:   :private,
    path:             ":identifier_template.pdf",
    bucket:           Mbc::DataStore.forms_and_templates_bucket_name


  validates_attachment_file_name :pdf, :matches => [/pdf\Z/]

エラーが発生します:

undefined method `validates_attachment_file_name' for #<Class:0x007fba67d25fe0>

興味深いことに、グレードを 3.5 に戻すと、同じ問題が発生します。

これを生成しているコントローラーは次のとおりです。

def index
   @fidelity_templates = FidelityTemplate.order("identifier asc").all
end

さらに:

def has_merchants_attached_file(attribute, options={})
  if Rails.env.test? || Rails.env.development?
     has_attached_file attribute,
     path: "paperclip_attachments/#{options[:path]}"
  else
    has_attached_file attribute, options
  end
end

これを引き起こしている可能性のあるものについて何か考えはありますか?

4

1 に答える 1

3

提供されているバリデータについては、次の場所で読むことができます。

https://github.com/thoughtbot/paperclip#validations

含まれているバリデータは次のとおりです。

  • AttachmentContentTypeValidator
  • AttachmentPresenceValidator
  • AttachmentSizeValidator

これらは、次のいずれかの方法で使用できます。

# New style:
validates_with AttachmentPresenceValidator, :attributes => :avatar

# Old style:
validates_attachment_presence :avatar

アップデート ...

上記のリンクをさらに読むと、セキュリティ検証に関するセクションが表示されます (Kirti Thorat に感謝します)。

https://github.com/thoughtbot/paperclip#security-validations

ファイル名の形式を検証する方法の例を示します。

# Validate filename
validates_attachment_file_name :avatar, :matches => [/png\Z/, /jpe?g\Z/]

コード スニペットから、検証がそのまま機能するように見えます。

ただし、この構文でペーパークリップが使用されているのを見たことがありません。

has_merchants_attached_file ...

おそらくそれがあなたの問題の原因ですか?通常、モデルにファイルを添付するには、次を使用します。

has_attached_file :pdf ...
于 2014-02-20T14:36:09.933 に答える