2016-06-01 4 views
-1

Ich habe Array von Hashes und wollen durchlaufen und speichern in dbRails speichern in 2 Modelle

products = [ 
    { 
     "currencyId"=>"UAH", 
     "categoryId"=>"9395236", 
     "picture"=> [ 
      "http://images.ua.prom.st/427654530_w640_h640_cid2043281_pid296482296-1fdb5252.jpg", 
      "http://images.ua.prom.st/427654531_w640_h640_cid2043281_pid296482296-d1bd8ab8.jpg" 
     ], 
     "pickup"=>"true", 
     "delivery"=>"true", 
     "name"=>"VOX - Vox Ac15Vr ", 
     "vendor"=>"VOX", 
     "vendorCode"=>"D000951"}, 
    { 
     other similar hash 
    }, 
    { 
     other similar hash 
    } 
] 

so dass ich, wie etwas zu tun:

products.each do |product| 
    Product.create(name:product['name']...) 

    # and than save images to AWS , but i even don't imagine how to do it. Because i don't have saved product. 
end  

ich die Klasse haben Product mit has_many :photos und Klasse Photo mit belongs_to :product

Ist es möglich?

+0

Bitte das ist etwas zu lesen über Schienen Verbände, Edelsteine ​​wie carrierwave, Nebel usw. – Sebin

Antwort

2

Sie können Paperclip verwenden, um zu tun, was Sie möchten. Mit ihm würden Sie so etwas wie haben:

Ihr Foto wäre wie:

class Product < ActiveRecord::Base 
    has_many :photos, autosave: true 
end 

mit, dass, damit Sie sie in Ihrer Schleife retten könnte:

class Photo < ActiveRecord::Base 
    has_attached_file :content, 
         styles: { 
          medium: "300x300>", thumb: "100x100>" 
         } 
    validates_attachment_content_type :content, content_type: /\Aimage\/.*\Z/ 

    belongs_to :product 
end 

Ihr Produkt aussehen würde

Und Büroklammer haben Unterstützung für S3, so müssen Sie nur konfigurieren, wie Sie es wollen.

+0

tnx, was ich brauche, – user