Rails 2.3 数据库中的回形针 gem 和自定义文件名
我正在尝试使用初始化程序中的 Paperclip.interpoles 为通过回形针 gem 上传的文件创建自定义文件名。我遇到的问题是,这是在上传文件时更新文件系统上的自定义文件名,但数据库文件名仍然是源文件的名称。有没有更好的方法然后必须重新分配数据库属性来处理这个问题?
I'm trying to create a custom filename for files uploaded via the paperclip gem using Paperclip.interpoles in the initializer. The problem I'm having is this is updating the custom filename on the file system when the file is uploaded, but the database filename remains the name of the source file. Is there a better way then having to reassign the database attribute to handle this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在 ActiveRecord 中使用
before_create
回调。由于回形针在调用 ActiveRecord::Base#save 之前不会将附加资源写入磁盘,因此这似乎是创建自定义文件名的正确时机。为此,只需注册一个普通方法来创建自定义文件名。这将更改附加图像的名称,然后您将在文件系统和数据库中找到该图像。
假设您有一个模型,您想要在其中附加具有自定义随机文件名的图像。
在您的模型中:
也在您的模型中:
您可以在任何地方声明您的方法,尽管将回调方法声明为受保护或私有被认为是很好的做法。
这将以自定义随机文件名保存附件。
希望这有帮助。
Try using
before_create
callback in ActiveRecord. As paperclip will not write the attached resource to disk untilActiveRecord::Base#save
is called, this seems to be the right time to create your custom filename.To do so, just register an ordinary method to create the custom filename. This will change the name of the attached image, which you'll then find on your file system and in your database.
Let's say you have a model, where you want to attach an image with a custom random filename.
In your model:
Also in your model:
You can declare your method anywhere you want, though it's considered good practice to declare callback methods as protected or private.
This will save the attachment with a custom randomized filename.
Hope this helps.