gpt4 book ai didi

Carrierwave 将对象数据保存到数据库而不是文件名

转载 作者:行者123 更新时间:2023-12-02 21:52:18 27 4
gpt4 key购买 nike

嗨我只是无法找出我的代码有什么问题。我有两个模型 Items 和 Images 以及它们之间的关系

 class Item < ActiveRecord::Base
attr_accessible :category_id, :user_id, :title, :description, :published, :start_date, :end_date, :images_attributes
has_many :images, :dependent => :destroy
accepts_nested_attributes_for :images, :reject_if => :all_blank, :allow_destroy => true
mount_uploader :name, ImageUploader
end

class Image < ActiveRecord::Base
belongs_to :item
mount_uploader :image, ImageUploader
attr_accessible :item_id, :name
end

我在 items_controller.rb 中调用 Carrierwave 的 3 个实例,以将 3 个图像添加到创建的项目

def new
@item = Item.new
3.times { @item.images.build }
end

View 表单如下所示:

<%= f.fields_for :images  do |builder| %>
<p> <%= builder.text_field :name %> </p>
<% end %>

此随机代码的结果是: <input id="item_images_attributes_0_name" name="item[images_attributes][0][name]" type="file">

当添加并保存新项目时,我在数据库中保存对象数据而不是文件名 (suit.jpg):

--- !ruby/object:ActionDispatch::Http::UploadedFile 
content_type: image/jpeg
headers: |
Content-Disposition: form-data; name="item[images_attributes][0][name]"; filename="suit.jpg"
Content-Type: image/jpeg

original_filename: suit.jpg
tempfile: !ru

下面数据库表的屏幕截图:

https://lh3.googleusercontent.com/_USg4QWvHRS0/TXDT0Fn-NuI/AAAAAAAAHL8/91Qgyp5jK3Q/carrierwave-objest-database-saved.jpg

有人知道如何解决这个问题吗?

最佳答案

我有一个类似的问题,我想创建自己的文件名(标识符),所以我在 uploader 上定义了一个文件名方法(在您的例子中为 ImageUploader)例如

def filename
@name ||= "foo"
end

关于Carrierwave 将对象数据保存到数据库而不是文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5194400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com