2

コード

私の画像モデルでは:

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

多くのイメージがあるサービス:

  # 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 を設定します。

だから私がservice内部rename_picサービスを使用しようとするとnil.

これを処理する方法についてのアイデアはありますか?

4

2 に答える 2