2010-11-19 14 views
4

私は間違っています - ドキュメント、チュートリアルなどを読んで、間違っていることがわからない。ペーパークリップが保存されない、エラーが発生しない

プロジェクトのもう1つのモデルはPaperclip用に設定されており、テスト時に機能します。添付ファイル情報をデータベースに保存して取得し、ファイルをpublic/system内のサブフォルダに格納します。

has_attached_file :document 

テーブル、モデルがリンクされ、必要な列があります:

document_file_name 
document_content_type 
document_file_size 
document_updated_at 
私は基本的に、私はモデルが次の行を持っている

に取り組んでいますモデルに向かってオーバー関連するコードをコピー

編集ビューは(HAMLで)これを持っています

%h1 Knowledge Base: Edit Article 
= message_block :on => @article 

- form_for(@article, :url => knowledge_base_article_path(@article), :html => {:multipart => true}) do |f| 

    #knowledgebase.clearfix 
    %label Upload KB Document: 
    %br 
    = f.file_field :document 
    - if @article.document.exists? 
     %p 
     = link_to "Current KB Attachment", @article.document.url 
     %p 
     = f.check_box :remove_document 
    <br> 

    = render :partial => "form", :locals => {:f => f} 
    = submit_tag "Save changes" 
    = link_to "Cancel", knowledge_base_article_path(@article) 

私はモデルインを保存しますタンスは、私はRailsは、私がアップロードしようとしているファイルを認識していることをログで確認できます。しかし、デシベル値が4つのdocument_ *の列のすべてで更新されていない

Processing KnowledgeBase::ArticlesController#update (for 127.0.0.1 at 2010-11-18 19:21:01) [PUT] 
    Parameters: {"article"=>{"document"=>#<File:/var/folders/EZ/EZKwznNSGq4PAI4ll9NUD++++TI/-Tmp-/RackMultipart20101118-58632-19nvbc8-0>, "question"=>"Craig's Sandbox", "active"=>"0", "answer"=>"Nothing here, this is to test attachment functionality"}, "commit"=>"Save changes", "action"=>"update", "_method"=>"put", "authenticity_token"=>"MfH6RgLAQLnRBuf9WxgqWA+mIrDoBtYF+d4MW5DNCC0=", "id"=>"886", "controller"=>"knowledge_base/articles"} 

、彼らはNULLのまま。同じテーブルの他の列は正常に更新されます。

db列の名前が正しく設定されているかどうかを確認するために、db列を別のものに変更してビューを表示するときにエラーが発生しました。

添付ファイルの取得をテストするには、public/system(モデルインスタンスの保存時に添付ファイルが保存される)内に手動でサブフォルダを作成し、テーブル内の4つのdocument_ *列を手動で変更しました。私は上の同じビューに行きました、そして、それは問題の正しい添付を示しました。

「remove_document」がチェックされているときに添付ファイルを削除できないことに気付きました。 document_ *のdb値は変更されません。

4つの列の読み取り操作があたかも同じですが、書き込み操作はありません(ただし、編集ビューページのモデルインスタンスで何かを変更すると、同じ表の他の列が変更されることがあります)。

私はここで間違っていますか?私は明らかな何かを逃したと確信しています。

答えて

8

コントローラーのArticleモデルをどのように更新しますか? @article.update_attributes(params[:article])を使用していますか?

原因は、attr_protectedまたはattr_accessibleの不適切な使用が原因である可能性があります。その場合は、

+1

ありがとうございます。この犯人は確かにコントローラにあったが、今は修正されている。私はparams [:article]の代わりにparams [:some_namespace_before_article]を持っていましたが、今解決されました!解決としてマークする。 –

関連する問題