Rails Admin With Dragonfly - 编辑。没有文件存在
Rails Admin With Dragonfly - Edit. No file present
使用Rails Admin with Dragonfly。但是,当我创建了一个新的 post 并带有连接 :ob
到蜻蜓的附件并想要对其进行编辑时。它说 "No file chosen"。因为它没有发现已经存在一个文件?
在我的 rails_admin 我已经做到了。
edit do
field :name
field :information
field :ob, :dragonfly
field :document_categories
end
这是我的模型:
class Document < ActiveRecord::Base
has_and_belongs_to_many :document_categories
after_commit :generate_versions, on: :create
dragonfly_accessor :ob
validates :name, :ob, presence: true
def generate_versions
DocumentWorker.perform_async(self.id)
end
def convertable_image?
unless self.try(:ob).nil?
self.try(:ob).mime_type.include?("image") || self.try(:ob).mime_type.include?("pdf")
else
return false
end
end
def respond_with_type
case self.try(:ob).mime_type.split("/")[1]
when "vnd.ms-powerpoint" , "vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.template"
"powerpoint"
when "application/vnd.ms-excel" , "vnd.openxmlformats-officedocument.spreadsheetml.sheet"
"excel"
when "application/msword" , "vnd.openxmlformats-officedocument.wordprocessingml.document"
"word"
else
self.try(:ob).mime_type.split("/")[1]
end
end
default_scope{order("name ASC")}
end
这是我的架构:
create_table "documents", force: :cascade do |t|
t.string "name"
t.string "ob"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "ob_uid"
t.string "ob_name"
t.text "information"
end
我还需要做些什么才能让它提取文件吗?
我设法使用您提供的配置重现了您的问题,结果证明对我有用的修复非常简单:只需 从 [=11= 中删除 ob
列] table.
说明: 默认情况下,Dragonfly 将磁盘上的附加文档(在文件存储中)存储到Dragonfly initializer 中指定的目录中。在数据库中,Dragonfly 仅存储 文档的名称和 UID。在您的情况下,它是您正确添加到架构中的 ob_uid
和 ob_name
列。
所以,除非您配置了某些 custom store for the documents, I assume you use the default file store and the ob
column is not needed. In fact, it confuses the rails_admin
's dragonfly support code,否则编辑页面确实会一直错误地显示 "No file chosen"。
修复后添加图像(为简单起见,我从 rails_admin 中的模型和编辑操作中删除了 document_categories
关联):
使用Rails Admin with Dragonfly。但是,当我创建了一个新的 post 并带有连接 :ob
到蜻蜓的附件并想要对其进行编辑时。它说 "No file chosen"。因为它没有发现已经存在一个文件?
在我的 rails_admin 我已经做到了。
edit do
field :name
field :information
field :ob, :dragonfly
field :document_categories
end
这是我的模型:
class Document < ActiveRecord::Base
has_and_belongs_to_many :document_categories
after_commit :generate_versions, on: :create
dragonfly_accessor :ob
validates :name, :ob, presence: true
def generate_versions
DocumentWorker.perform_async(self.id)
end
def convertable_image?
unless self.try(:ob).nil?
self.try(:ob).mime_type.include?("image") || self.try(:ob).mime_type.include?("pdf")
else
return false
end
end
def respond_with_type
case self.try(:ob).mime_type.split("/")[1]
when "vnd.ms-powerpoint" , "vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.template"
"powerpoint"
when "application/vnd.ms-excel" , "vnd.openxmlformats-officedocument.spreadsheetml.sheet"
"excel"
when "application/msword" , "vnd.openxmlformats-officedocument.wordprocessingml.document"
"word"
else
self.try(:ob).mime_type.split("/")[1]
end
end
default_scope{order("name ASC")}
end
这是我的架构:
create_table "documents", force: :cascade do |t|
t.string "name"
t.string "ob"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "ob_uid"
t.string "ob_name"
t.text "information"
end
我还需要做些什么才能让它提取文件吗?
我设法使用您提供的配置重现了您的问题,结果证明对我有用的修复非常简单:只需 从 [=11= 中删除 ob
列] table.
说明: 默认情况下,Dragonfly 将磁盘上的附加文档(在文件存储中)存储到Dragonfly initializer 中指定的目录中。在数据库中,Dragonfly 仅存储 文档的名称和 UID。在您的情况下,它是您正确添加到架构中的 ob_uid
和 ob_name
列。
所以,除非您配置了某些 custom store for the documents, I assume you use the default file store and the ob
column is not needed. In fact, it confuses the rails_admin
's dragonfly support code,否则编辑页面确实会一直错误地显示 "No file chosen"。
修复后添加图像(为简单起见,我从 rails_admin 中的模型和编辑操作中删除了 document_categories
关联):