使用关联模型重命名图像 - 回形针 [英] Rename image using associated model - Paperclip

查看:35
本文介绍了使用关联模型重命名图像 - 回形针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的图像模型中:

has_attached_file :pic
before_post_process :rename_pic
before_save ->{ p 'before_save ----------------' }
after_post_process ->{ p 'after_post_process --------------' }

  def rename_pic
    p 'en imagen'
    p self
    p 'en imagen'
  end

在有很多图像的服务中:

In service that has many images:

  # don't use accepts_nested_attributes_for
  before_save :create_images
  attr_accessor :images_attributes

  def create_images
    # images_attributes example value: { "0"=> {img_attrs}, "1" => {img_attrs1} } 
    images_attributes.all? do |k, image_attrs|
      if image_attrs.delete(:_destroy) == "false"
        p 'asd'
        image = Image.new image_attrs.merge(service_id: id)
        p image.service
        p image.service_id
        image.save
      end
    end
  end

这是我得到的输出:

"asd"
"en imagen"
#<Image id: nil, service_id: nil, pic_file_name: "Screen_Shot_2013-04-07_at_5.18.03_PM.png", pic_content_type: "image/png", pic_file_size: 16041, pic_updated_at: "2013-07-30 22:58:46", created_at: nil, updated_at: nil, user_id: nil>
"en imagen"
G"after_post_process --------------"
#<Service id: 427, event_id: nil, min_capacity: nil, max_capacity: nil, price: #<BigDecimal:7fb6e9d73d48,'0.0',9(18)>, image_path: nil, name: "Super Franks", desc: "zxc", created_at: "2013-05-12 19:01:54", updated_at: "2013-07-30 19:32:48", address: "pasadena", longitude: 77.225, latitude: 28.6353, gmaps: true, city: "san francisco", state: "california", country_id: "472", tags: "Banquet", created_by: 22, avg_rating: #<BigDecimal:7fb6efdbcf10,'0.0',9(18)>, views: 27, zip_code: "", address2: "", price_unit: "", category_id: 3, featured: true, publish: true, slug: "banquet-super-franks", discount: nil, currency_code: "USD", video_url: "http://www.youtube.com/watch?v=A3pIrBZQJvE", short_description: "">
427
"before_save ----------------"

问题

打电话时

image = Image.new image_attrs.merge(service_id: id)

Paperclips 似乎开始处理,然后设置 service_id.

Paperclips seems to start processing, and then set service_id.

因此,当我尝试在 rename_pic 中使用 service 时,服务是 nil.

So when I try to use service inside rename_pic service is nil.

关于如何处理这个问题有什么想法吗?

Any ideas on how to handle this?

推荐答案

这解决了我的问题,我改了:

This solved my problem, I changed:

before_post_process :rename_pic

到:

before_create :rename_pic

这是rename_pic,作为记录:

and this is rename_pic, for the record:

def rename_pic
  extension = File.extname(pic_file_name).downcase
  self.pic.instance_write :file_name,
    "#{service.hyphenated_for_seo}#{extension}"
end

where service has_many images, and image belongs_to service.

where service has_many images, and image belongs_to service.

这篇关于使用关联模型重命名图像 - 回形针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆