我正在尝试创建一个适用于客户端的CMS应用程序。该应用程序当前有一个文档类,用paperclip上传文档。
除此之外,我们还运行一个访问数据库的python脚本,获取给定事件的大量信息,创建提议word文档,并在正确的事件下将其上传到数据库。
这一切都有效,但应用程序无法识别该文档。如何创建一个能够正确上传文档的python脚本,以便回形针知道发生了什么?
这是我的回形针控制器:
def new
@event = Event.find(params[:event_id])
@document = Document.new
end
def create
@event = Event.find(params[:event_id])
@document = @event.documents.new(document_params)
if @document.save
redirect_to event_path(@event)
end
end
private
def document_params
params.require(:document).permit(:event_id, :data, :title)
end
模型
validates :title, presence: true
has_attached_file :data
validates_attachment_content_type :data, :content_type => ["application/pdf", "application/msword"]
这是python代码。
f = open(propStr, 'r')
binary = psycopg2.Binary(f.read())
self.cur.execute("INSERT INTO documents (event_id, title, data_file_name, data_content_type) VALUES (%d,'Proposal.doc',%s,'application/msword');" % (self.eventData[0], binary))
self.con.commit()
答案 0 :(得分:0)
你应该使用Ruby来编写脚本,因为它可以加载你需要的任何模型信息或其他类。
但假设您的要求决定了python的使用,请注意Paperclip不会将文档存储在数据库表中,只会存储文件'元数据。实际文件默认存储在/ public目录中的文件系统中(也可能是s3等,具体取决于您的配置)。我会确保您实际上将文件保存到正确的预期目录。根据{{3}}的默认路径是:
:rails_root/public/system/:class/:attachment/:id_partition/:style/:filename
因此您必须进行另一个SQL查询以检索新记录的ID。我不相信pdf具有:style属性,因为你不使用imagicmagick来调整它们的大小,所以建立一个看起来像这样的路径:
/public/system/documents/data/000/000/123/my_file.pdf
并将其保存在python脚本中。