使用不带ActionParameters的Active Storage创建记录

时间:2018-05-03 14:31:49

标签: ruby-on-rails rails-activestorage

我尝试创建一个带有图像的记录,带有create的directyl和带有模型的

Banner.create(   start_at:Time.now,   位置:'site',   image_fr:File.new(“#{Rails.root} /db/seeds/images/banners/pdfs/gift_voucher_bottom.png”,'r'),   image_de:File.new(“#{Rails.root} /db/seeds/images/banners/pdfs/gift_voucher_bottom.png”,'r'),   宽度:595,   身高:零 )

我必须在创作时刻做,而不是在.attach之后,因为验证。我们可以这样做吗?

1 个答案:

答案 0 :(得分:1)

您可以将一个块传递给create。它会在保存之前用新记录调用:

Banner.create(start_at: Time.now, location: 'site', width: 595, height: nil) do |banner|
  Rails.root.join('db/seeds/images/banners/pdfs/gift_voucher_bottom.png').open('rb') do |io|
    banner.image_fr.attach(io: io, filename: 'banner.png', content_type: 'image/png')
  end

  # ...
end