使用不带 ActionParameters 的 Active Storage 创建记录
Use create an record with Active Storage without ActionParameters
我尝试创建一个记录,有图像,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,因为要进行验证。我们可以这样做吗?
您可以将块传递给 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
我尝试创建一个记录,有图像,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,因为要进行验证。我们可以这样做吗?
您可以将块传递给 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