2012-04-23 13 views
14

tôi sử dụng phương pháp này để đặt tên nhiều hình ảnh trước khi tiết kiệm:Kẹp giấy - đổi tên file trước khi lưu

def rename_avatar 
    self.avatar.instance_write :file_name, Time.now.to_i.to_s 
    end 

    before_post_process :rename_avatar 

Hình ảnh được đổi tên vào thời điểm hiện tại, nhưng có không thêm các loại tập tin, thay vì 1334487964. jpg chỉ được lưu 1334487964..

Điều tôi thiếu ở đó? Tôi nghĩ : file_name chỉ chứa tên tập tin - mà không có các loại tập tin

Trả lời

22

Đây là cách làm thế nào tôi khắc phục vấn đề của tôi:

def rename_avatar 
    #avatar_file_name - important is the first word - avatar - depends on your column in DB table 
    extension = File.extname(avatar_file_name).downcase 
    self.avatar.instance_write :file_name, "#{Time.now.to_i.to_s}#{extension}" 
    end 
+0

Giải pháp này hoạt động ok, ngoại trừ thực tế nếu bạn đang chỉnh sửa bản ghi. trong trường hợp của tôi, tôi có 3 tệp đính kèm, ảnh, chứng chỉ1, chứng chỉ 2, nếu tôi thay đổi ảnh, tôi phải tải lại chứng chỉ vì khi thường trình gọi lại "before_post", nó sẽ ghi lại tên tệp mới và không tồn tại trên DB. Bạn có một giải pháp cho điều này? Cảm ơn! ;) – drmwndr