我使用Rails 5和rails_admin以及carrierwave gems。
我有一个模型Photo
和图像上传器(根据carrierwave文档),看起来大致如下:
class Photo < ActiveRecord::Base
mount_uploader :image, ImageUploader
belongs_to :project
validates :name, presence: true
validates :image, presence: true
end
鉴于我已经创建了一些Photo
个对象,我可以在rails_admin
管理员视图中看到它们的列表。
我开始编辑其中一个 我编辑名字 我继续保存它
然后rails管理员发射了一些魔法并且照片正在保存,但是在这个动作之后图像消失了。
我一直在挖掘一下请求被解雇的内容,并rails_admin
触发了PUT
请求这样的参数:
{
"authenticity_token"=>"xxx",
"photo"=>{
"name"=>"test2",
"description"=>"ewdeeweeefxxxwefwe",
"project_id"=>"3",
"image_cache"=>"",
"main"=>"0",
"about_us"=>"0"
},
"return_to"=>"http://localhost:3000/panel-admin/photo?model_name=photo", "_save"=>"", "model_name"=>"photo", "id"=>"29"}
我的Photo
对象不仅会更新name
,还会更新image_url
当然会覆盖已安装到Image
的{{1}} Photo
我不知道为什么会这样,以及如何防止它。
任何人都可能遇到此问题并知道如何解决它?
答案 0 :(得分:0)
我发现了。当我取消注释上传器中的自定义filename
方法时,它会很好地工作。