フェイカージェムを使用してランダムデータをアプリケーションにシードするレーキタスクがあります。ただし、このrakeタスクでアップロードする画像(ロゴなど)もあります。
すでにペーパークリップを設定していますが、レーキタスクでプログラムでアップロードする方法がありません。何か案は?
フェイカージェムを使用してランダムデータをアプリケーションにシードするレーキタスクがあります。ただし、このrakeタスクでアップロードする画像(ロゴなど)もあります。
すでにペーパークリップを設定していますが、レーキタスクでプログラムでアップロードする方法がありません。何か案は?
プログラム的に とはどういう意味ですか? 次の行に沿ってファイルパスを取るメソッドを設定できます
my_model_instance = MyModel.new
file = File.open(file_path)
my_model_instance.attachment = file
file.close
my_model_instance.save!
#attachment
モデルの Paperclip 宣言から来ています。この場合、モデルは次のようになります
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
これが役立つことを願っています!
このためのメソッドを実際に記述する必要はありませんでした。はるかに簡単です。
モデル内 ->
Class Model_Name < ActiveRecord::Base
has_attached_file :my_attachment,
:params_for_attachment
seed.db 内 ->
my_instance = Model_name.new
my_instance.my_attachment = File.open('path/to/file/relative/to/app')
my_instance.save!
おそらく、以前の回答は、(メソッド Model_name.attachment を記述するのではなく) モデルで定義されているアタッチメントの名前を使用することを意味していました。これが明確であることを願っています。