2

Rails 3.2.6 での Carrierwave の使用。いくつかの添付ファイルがファイルサイズで表示されるテーブルを並べ替える必要があることを除いて、すべて問題ありません。フォグのあるストレージにS3を使用しています。

Carrierwave が次のように表示されているとします。

<%= @project.attachment %>

フィールド名の後に「.size」を使用して、ファイルのサイズを表示できます。

<%= @project.attachment.size %>

ファイルサイズをバイト単位で表示しますが、データベースからレコードを取得するときに順序句を使用する必要があるため、これで並べ替えることができません。アップロード後にデータベースの特定の列にファイル サイズを書き込む方法はありますか?

どうもありがとう

4

3 に答える 3

2

これは私のために働いた

 before_save :update_project_attributes

 private

 def update_project_attributes
    if project.present? && project_changed?
      self.file_size = project.file.size
    end
 end
于 2012-12-18T04:07:10.607 に答える
0

わかりました、これで before_save が動作するようになりました

before_save :set_size

def set_size
  self.size = self.upload.size
end

ここで、upload はマウントされたフィールドで、size はサイズを格納する新しい db 列です。

于 2012-08-03T08:35:28.767 に答える
0

モデルに仮想属性を追加し、ファイル サイズを返すカスタム getter メソッドを定義する必要があります。その後、通常どおり、この仮想属性に関してソートできます。詳細が必要な場合はお知らせください。提供できるように努めます。

于 2012-08-02T21:51:10.497 に答える