faker gemを使用してアプリケーションにランダムデータをシードするレイクタスクがあります。しかし、私たちはこのレーキ課題にアップロードしたい画像(ロゴなど)も持っています。Paperclipを使用してプログラムでファイルアップロードを設定する方法
既にPaperclipがセットアップされていますが、プログラムでレイクタスクにアップロードする方法はありません。何か案は?
faker gemを使用してアプリケーションにランダムデータをシードするレイクタスクがあります。しかし、私たちはこのレーキ課題にアップロードしたい画像(ロゴなど)も持っています。Paperclipを使用してプログラムでファイルアップロードを設定する方法
既にPaperclipがセットアップされていますが、プログラムでレイクタスクにアップロードする方法はありません。何か案は?
プログラムではどういう意味ですか?あなたは
my_model_instance = MyModel.new
file = File.open(file_path)
my_model_instance.attachment = file
file.close
my_model_instance.save!
#attachment
は、我々のモデルでは、当社のペーパークリップ宣言から来ているの線に沿ってファイルパスを取る方法を設定することができます。この場合、モデルは次のようになります
class MyModel < ActiveRecord::Base
has_attached_file :attachment
end
プロジェクトのブートストラップ時には、これと同様のことが行われています。
私はレーキの仕事でこれをします。
photo_path = './test/fixtures/files/*.jpg'
Dir.glob(photo_path).entries.each do |e|
model = Model.find(<query here>)
model.attachment = File.open(e)
model.save
end
私はこれが役立つことを望みます。
私は実際にこれのためのメソッドを書く必要はありませんでした。ずっと簡単です。モデルで
- seed.dbで>
Class Model_Name < ActiveRecord::Base
has_attached_file :my_attachment,
:params_for_attachment
- >
my_instance = Model_name.new
my_instance.my_attachment = File.open('path/to/file/relative/to/app')
my_instance.save!
おそらく、以前の答えは、モデルで定義されているというよりも、書き込み(添付ファイルの名前を使用するためのものメソッドModel_name.attachment)。 これは明らかです。
'attachment'はあなたが' has_attached_file:attachment 'に設定したものです。 –
@BSeven答えにそれを加えれば、もっと明確になると思いますか?もしそうなら、私はそれを追加します。 – theIV
はい。 'attachment 'が予約語かユーザー定義かどうかは不明です。 –