标签: rails-activestorage

9
推荐指数
3
解决办法
6110
查看次数

使用activestorage直接上传时如何在上传到S3时指定前缀?

使用标准S3配置:

AWS_ACCESS_KEY_ID:        [AWS ID]
AWS_BUCKET:               [bucket name]
AWS_REGION:               [region]
AWS_SECRET_ACCESS_KEY:    [secret]
Run Code Online (Sandbox Code Playgroud)

我可以使用此Rails 5.2代码将文件上传到S3(使用直接上传)(仅显示相关代码):

form.file_field :my_asset, direct_upload: true

在提交表单后,这将有效地将我的资产置于我的S3存储桶的根目录中.

如何指定前缀(例如"development /",以便我可以模仿S3上的文件夹)?

ruby-on-rails amazon-s3 rails-activestorage ruby-on-rails-5.2

9
推荐指数
3
解决办法
2276
查看次数

Rails使用活动存储读取csv文件数据

我有这个课程,我正在使用主动存储

class MaterialsUpload < ApplicationRecord
  has_one_attached :csv_file
end
Run Code Online (Sandbox Code Playgroud)

这是附件

#<ActiveStorage::Attached::One:0x007ff1f0be9e90
 @dependent=:purge_later,
 @name="csv_file",
 @record=
  #<MaterialsUpload:0x007ff1f0c604f0
   id: 3,
   success: 0,
   errors_list: [],
   total: 0,
   created_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00,
   updated_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00>>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以读取数据,所以我可以做这样的事情

string = materials_upload.csv_file.read
CSV.parse(csv_string, headers: true) do |row|
    # do something
end
Run Code Online (Sandbox Code Playgroud)

csv ruby-on-rails rails-activestorage

9
推荐指数
1
解决办法
3074
查看次数

ActiveStorage 检查文件是否存在很慢

创建变体时,我发现检查文件是否存在时间很慢。奇怪的是,我没有看到文件上传时的缓慢时间。我们怎样才能加快速度?

当你调用这样的东西时会发生这种情况。

@object.artwork.variant(resize: "100X100")
Run Code Online (Sandbox Code Playgroud)

注意检查文件是否存在的缓慢时间(超过 1 秒!)。

S3 Storage (1149.3ms) Checked if file exists at key: variants/K6XGSR9uuyEG17Vd6HXSLyew/4c1922cb9e0ee90688549c6a10906cc59c45f90ab173febdd7ae9dfc72c0378b
Run Code Online (Sandbox Code Playgroud)

您可以在控制台中重新创建

ActiveStorage::Blob.service.exist?("variants/K6XGSR9uuyEG17Vd6HXSLyew/4c1922cb9e0ee90688549c6a10906cc59c45f90ab173febdd7ae9dfc72c0378b")
Run Code Online (Sandbox Code Playgroud)

以上是生产中的实际示例,但通常我们会看到平均时间在 300 毫秒范围内。

ruby-on-rails aws-sdk rails-activestorage

9
推荐指数
1
解决办法
3811
查看次数

Active Storage:表单重新显示时保留/缓存上传文件的最佳做法

使用Active Storage上载文件时,如果文件上传完毕并且表单被重新显示,例如当该表单的验证由于某种原因失败时,文件就会消失.

有没有办法在表格重新显示之间缓存或保留它?Shrine有一个很好的插件用于此目的,我正在寻找类似的Active Storage.

ruby-on-rails rails-activestorage ruby-on-rails-5.2

9
推荐指数
1
解决办法
1519
查看次数

Rails活动存储 - 打开/下载链接

一个问题Active Storage(刚刚更新到rails 5.2)试图打开附加文件,保存在blob上,重定向到root_path任何想法我怎样才能打开/下载它.

我在rails视图中的代码是:

<%= link_to(document.filename, rails_blob_path(document, disposition: "attachment")) %>
Run Code Online (Sandbox Code Playgroud)

TIA

ruby ruby-on-rails rails-activestorage ruby-on-rails-5.2

9
推荐指数
2
解决办法
5335
查看次数

如何在没有 Active Storage 的情况下安装 Action Text?

我想向我的应用程序添加操作文本。但它也设置了 Active Storage。我已经使用 CarrierWave,不需要 Active Storage。顺便说一句,我根本不需要在编辑器中上传文件。

ruby ruby-on-rails carrierwave trix rails-activestorage

9
推荐指数
1
解决办法
1416
查看次数

将活动存储附件下载到光盘

该指南说我可以保存光盘附件以在其上运行一个过程,如下所示:

message.video.open do |file|
  system '/path/to/virus/scanner', file.path
  # ...
end
Run Code Online (Sandbox Code Playgroud)

我的模型的附件定义为:

has_one_attached :zip
Run Code Online (Sandbox Code Playgroud)

然后在我定义的模型中:

def process_zip      
  zip.open do |file|
    # process the zip file
  end
end
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

private method `open' called
Run Code Online (Sandbox Code Playgroud)

在zip.open调用.

如何在本地保存zip以进行处理?

ruby-on-rails rails-activestorage

8
推荐指数
2
解决办法
2166
查看次数

rails active_storage:install IS NOT WORKING

我已将rails api应用程序从5.1更新到5.2.我只使用rails api.我正在尝试使用活动存储.我认为问题是由于线路config.api_only = true输入config/application.rb.

我做了很多谷歌,但没有找到任何东西如何在rails api中使用主动存储.

这是我的Gemfile:

source 'https://rubygems.org'

ruby '2.5.1'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'rails', '~> 5.2.0'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.7'
gem 'rack-cors'

# Auth
gem 'bcrypt'
gem 'jwt'

#Media file upload
gem 'activestorage'

# gem 'devise', '4.4.3'
# gem 'devise-jwt', '~> 0.5.6'
gem 'active_model_serializers', '~> 0.10.0', require: true

# backgroud jobs
gem 'sidekiq'

# fast boot
gem 'bootsnap', …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-api rails-activestorage

8
推荐指数
2
解决办法
2632
查看次数

如何查询具有ActiveStorage附件的记录?

给定具有ActiveStorage的模型

class User 
  has_one_attached :avatar
end
Run Code Online (Sandbox Code Playgroud)

我可以检查一个用户是否有化身

@user.avatar.attached? 
Run Code Online (Sandbox Code Playgroud)

但是,如何返回具有附件(或没有附件)的所有用户的集合?

我尝试使用joins返回带有附件的所有Users,但这在blob或附件表上似乎都不起作用,或者我的语法不正确。

我确定我忽略了一些显而易见的事情。是否可以按照以下方式做一些事情:

User.where(attached_avatar: nil)
Run Code Online (Sandbox Code Playgroud)

如果是这样,在哪里记录?

ruby-on-rails rails-activestorage

8
推荐指数
3
解决办法
1527
查看次数