2017-02-08 10 views
0

私はPaperclipを使用してファイルを添付した2つのモデルを持っています。これらの2つのモデルはほぼ同じですが、2番目のモデルでは、各クラスでメソッド '.attachment_name'を呼び出すと、nilが返されます。Paperclip attachment_nameはnilを返します

どちらの情報が重要であるか分からないため、私はここに両方の​​モデルのコードを公開しています。ここで

は、最初のモデルである:ここでは

class DocumentationFile < ActiveRecord::Base 
    belongs_to :documentation 

    has_attached_file :file, styles: { large: '720x720>', medium: '300x300>', thumb: '100x100>' }, 
          default_url: '/images/:style/missing.png' 

    validates_attachment :file, content_type: { content_type: [/\Aimage\/.*\Z/, 'application/pdf'] }, 
         size: { in: 0.megabytes..5.megabytes } 


    validates :file, presence: true 
end 

は、第1次のとおりです。

class JobExtra < ActiveRecord::Base 
    belongs_to :job 

    has_attached_file :file 
    validates_attachment :file, content_type: { content_type: [/\Aimage\/.*\Z/, 'application/pdf'] }, 
         size: { in: 0.megabytes..5.megabytes } 
end 

だから、レールコンソールで、私は2番目のモデルとの両方のモデルのための添付ファイル名を取得しようとしているとき私は何も得ていない:

2.3.3 :003 > DocumentationFile.attachment_name 
=> :file 
2.3.3 :004 > JobExtra.attachment_name 
=> nil 

なぜそれが起こっているのか、私が間違っているのか分かりません。私はhas_attached_fileに同じ検証とオプションを追加しようとしましたが、それは役に立ちませんでした。

私はアイデアがなくなり、この問題は私の夢中です。私はどんな助けにも感謝します!

答えて

0

あなたのコントローラは見えますか?私は同じ問題を抱えていたと私はcreate方法で書くことによってそれを解決:

def create 
    @job.file = params[:job][:file] 
    @job.save 
end 

この背後にある理由は、Railsが実際にファイル/画像を処理していることですが、すべてがモデル内にあります。このような何か:

パラメータ:

{"job"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0x007f 
f342035948 @tempfile=#<Tempfile:/var/folders/_2/....jpg>, @original_filename="....jpg", filename=\"....jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"send"} 
関連する問題