Shp*_*ord 12 model ruby-on-rails
我有一个我调用的before_save方法重命名上传的图像.
before_save :randomize_file_name
def randomize_file_name
extension = File.extname(screen_file_name).downcase
key = ActiveSupport::SecureRandom.hex(8)
self.screen.instance_write(:file_name, "#{key}#{extension}")
end
Run Code Online (Sandbox Code Playgroud)
该方法是我Item模型的一部分.
当我创建一个新项目或需要更新与项目相关联的图像时,这很有用......但问题是,如果我需要更新项目而不是图像,该randomize_file_name方法仍然会运行并重命名该文件数据库(虽然不是文件本身,显然).
所以,我认为我需要找到一种方法,只有randomize_file_name在表单提交中包含一个文件才能运行...但我不知道如何解决这个问题.
Sim*_*tti 12
使用脏对象.
before_save :randomize_file_name
def randomize_file_name
# assuming the field that holds the name
# is called screen_file_name
if screen_file_name_changed?
extension = File.extname(screen_file_name).downcase
key = ActiveSupport::SecureRandom.hex(8)
self.screen.instance_write(:file_name, "#{key}#{extension}")
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10128 次 |
| 最近记录: |