Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 读取rails种子文件后图像文件被删除_Ruby On Rails_Shrine - Fatal编程技术网

Ruby on rails 读取rails种子文件后图像文件被删除

Ruby on rails 读取rails种子文件后图像文件被删除,ruby-on-rails,shrine,Ruby On Rails,Shrine,在rails种子文件中使用此选项拾取随机图像 Room.all.each do |room| count = rand(1..5) count.times do room.photos.create!( image: File.new(Dir['app/assets/images/sampleimages/*.jpg'].sample)) end end 但在阅读后,从我的资产文件夹中删除该图像。这里可能有什么问题?上面的代码是用来做这件事的,还是与神龛(图

在rails种子文件中使用此选项拾取随机图像

Room.all.each do |room|
  count = rand(1..5)
  count.times do
    room.photos.create!(
        image: File.new(Dir['app/assets/images/sampleimages/*.jpg'].sample))
  end
end
但在阅读后,从我的资产文件夹中删除该图像。这里可能有什么问题?上面的代码是用来做这件事的,还是与
神龛
(图像上传器)有关

使用版本
rails5.2.0
sicle2.10.1

我的完整
imageUploader.rb

class ImageUploader < Shrine
  include ImageProcessing::MiniMagick
  plugin :processing
  plugin :determine_mime_type
  plugin :remove_attachment
  plugin :store_dimensions
  plugin :validation_helpers
  plugin :versions
  plugin :pretty_location
  plugin :delete_raw

  Attacher.validate do
    validate_max_size 5.megabytes, message: 'is too large (max is 5 MB)'
    validate_mime_type_inclusion ['image/jpeg', 'image/png', 'image/gif']
  end

  def process(io, context)
    case context[:phase]
    when :store
      original = io.download
      pipeline = ImageProcessing::MiniMagick.source(original)
      size_300 = pipeline.resize_to_fit!(300, 300)
      size_150 = pipeline.resize_to_fill!(150, 150)
      original.close!
      {original: io, medium: size_300, thumb: size_150}
    end
  end
end
class-ImageUploader
如果加载了
delete\u Raw
插件,则上传后原始文件对象将自动删除。建议在使用
版本
时加载此插件,因为您希望经过处理的图像缩略图在上载后在本地删除。然而,它有一个不幸的副作用,默认情况下它也会删除输入文件

分配的文件将上载到临时存储器,因此您可以通过告诉
delete_raw
插件仅删除上载到永久存储器的原始文件来解决此问题:

plugin :delete_raw, storages: [:store]

如果你说你使用的是
sicle
,你能把你正在使用的插件列表发布出来吗well@seethrough更新您可能正在上载程序中加载
delete_raw
插件,该插件用于在上载后删除处理过的图像缩略图,但会删除任何原始文件,这是一个不幸的副作用。这个功能应该是
版本
插件的一部分,我会将更改推给master来进行更改。您可以通过告诉
删除\u raw
插件只删除上传到永久存储的原始文件来解决这个问题:
插件:删除\u raw,存储:[:存储]
@janko-m谢谢您的提醒。我想知道我对这种行为做了什么错事。我现在记得刚才添加了delete_raw。但是最近我使用了我的
种子.rb
并注意到了这个问题。如果你能提供作为一个回答,我可以给你适当的信用,并感谢你为这个了不起的宝石。