0

私のプロジェクトには mongoid とcarrierwave-mongoid の gem があり (ユーザー モデルのアバター用)、アップロードされた画像の URL にタイムスタンプが必要です。これに関する Wiki ページ ( https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Use-a-timestamp-in-file-names ) があることは知っていますが、「これはこの方法を使用する代わりに、タイムスタンプをデータベースに保存し、モデルから読み取ってファイル名を生成することを強くお勧めします。」そして、私はそれを行う方法がわかりません。

Rails は、画像 URL のタイムスタンプを自動的に生成するか、特定の属性から生成する必要があると思いますか? したがって、この属性の正しい名前や、Mongoid とcarrierwave-mongoid を使用した正しいアプローチが何であるかはわかりません。

これについての詳細または解決策に関する情報を見つけることができる情報またはリンクを教えてください。

GitHub の私のリポジトリは非公開であるため、この Gist ( https://gist.github.com/2355128 ) を実行しました。ここで、私のユーザー モデルとアバター アップローダーを確認できます。

ご協力いただきありがとうございます。

4

1 に答える 1

0

これは、回答に必要なよりも一般的かもしれませんが、適切な解決策にたどり着くことを願っています。MongoDB のデフォルトの _id フィールドに使用される一意の ObjectID にはタイムスタンプが「組み込まれています」。BSON::ObjectId は、それを抽出するために Mongoid で探しているものです。

ここにも書き込みがあります:

http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield .

したがって、ObjectID の周りにラッパーを使用して URL を構築し、余分なタイムスタンプの使用を完全に回避できます。

于 2012-04-19T16:13:49.657 に答える