2012-03-06 14 views
0

私はRailsでPaperclipを使用してAmazon S3に画像をアップロードしています。Rails、Amazon S3へのペーパークリップのアップロードはAmazon RDSでは機能しませんが、Postgresでの作業

ここで、私はHeroku(postgres)によって提供されるデータベースを使用すると、アップロードは完全に機能します。

しかし、Amazon RDSを使用して切り替えると、アップロードは機能しません。

注:アプリケーションの残りの部分が完全に機能するので、RDSの設定に問題はありません。その写真のアップロードは動作を停止します。

私が推測することは、paperclipが画像テーブルにエントリを入れたいときに、RDS上のデータベースにアクセスできないが、Herokuに割り当てられたPostgresデータベースを使用するときにはうまくアクセスできるということです。

アイデア?

+0

ペーパークリップは、ActiveRecordのを介してデータベースを使用しているあなたのログに

Cannot mass assign attribute 'image' 

ようなものが表示されます。これは問題ではないようです。あなたはproduction.logを見たことがありますか?例外はありますか? – iltempo

答えて

0

は、あなたが私のコードでたとえばattr_accessibleとして、あなたのクリップのフィールドを宣言した

class VenueImage < ActiveRecord::Base 

    belongs_to :venue 

    has_attached_file :image, 
    :styles => { :large => "1200x900#", :medium => "800x600#", :thumb=> "100x100#" } 

    validates_attachment_presence :image 

    validates_attachment_content_type :image, 
    :content_type => %r{image/.*}, 
    :less_than => 1.megabyte 

    attr_accessible :image 

end 

RDSの下でこれだけのラフな推測であり、それはそれはpostgresの下で働くということは意味がないとはないが、 attr_accessibleは、いつでもチェックしてみる価値があります。これが問題であるなら、あなたは

+0

それを考え出した。アップロードがローカル(mysql)ではなくRDS(mysql)で動作していたとき。私はそれがデータベースではないことに気づいた。ログは@ picture.saveでエラーが発生したため、ファイルを保存する際にエラーが発生していました。私がピクチャテーブルをローカルに比較したときに、RDSでフィールドの1つがNOT NULLに設定されていて、ローカルではないことに気付きました。もちろん、そのフィールドは設定されていませんでした。フィールドを手動でローカルに変更しておく必要がありますが、移行を更新するのを忘れてしまいました。悪いレール練習の問題:P。あなたの応答をありがとうbtw – Varun

+0

しかし、私はまだそれがどのようにPostgresで働いているのか理解していない – Varun

関連する問題