Rails4 + Скрепка (невозможно клонировать из модели)

Использование Rails 4.0.2 и скрепки 3.5.3

Я хочу иметь возможность клонировать одну и ту же модель (событие) для любых заданных дат, которые пользователь вводит в форму. Поэтому, если я хочу, чтобы у меня были события x, x+1 и x+2, мне нужно скопировать вложение скрепки (которое оказывается изображением) в события x + 1 и x + 2.

Теоретически, этого должно быть достаточно, чтобы сделать что-то вроде

def create

respond_to do |format|
  if @event.save
     dates.each do |date| #the date var comes from another place, redacted for clearness
       event = @event.dup
       event.photo = @eevnt.photo
       event.save
     end
  end
end

Но это не так.

Это как-то помечает вложения скрепки для удаления.

Вот копия журнала:

Обработка EventsController#create в виде HTML Параметры: {"utf8"=>"✓", "authenticity_token"=>"U9H0RPuSKd1NgjMsoqHCAUqNW+IrWtZZM9PtzGAefTA=", "event"=>{"title"=>"fecha",> event_type =>"conciertos", "Province"=>"Madrid", "city"=>"Madrid", "replication_dates"=>"30/01/2014,31/01/2014", "time_template_hour"=>"12", "time_template_minute"=>"0", "location_name"=>"Sala Lapusuvi", "address"=>"Cl. albasanz 72", "description"=>"

Lorem

\ r \ n "," photo "=> #, @original_filename =" _ MG_4256.jpg ", @ content_type =" image / jpeg ", @ headers =" Content-Disposition: form-data; имя =\"событие [фото]\"; filename=\"_MG_4256.jpg\"\r\nContent-Type: image/jpeg\r\n">, "youtube_video"=>"", "event_tickets_attributes"=>{"1390997939186"=>{"name"=>"General", "price"=>"10", "stock"=>"10", "_destroy"=>"false"}}, "fee_handler"=>"0", "no_print_event"=>"0", "term "=>"1", "status"=>""}, "commit"=>"Crear mi evento"} Загрузка промоутера (0,9 мс) ВЫБРАТЬ" промоутеры ".* ИЗ" промоутеров " WHERE " промоутеры "."id" = 2 ORDER BY "promoters"."id"Команда ASC LIMIT 1:::: -format '%wx%h,%[exif: ориентация]' '/var/folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]'Команда:: определить -формат%m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg -0matmat % ''matmat0]'matmat0] '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]' Command:: identifier -format %m '/var/folders/q1/txykj42x56g0v_gk0/010/010/160/160/160/130/160 [0]' Command:: convert '/var/folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]' -auto-orient -resize "250" '/var/folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg20140129-18b 'filem:: command-file::5m mime '/ var / folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg20140129-1873-1ng5mxd' Команда:: определить -формат '% wx% h,% [exif: ориентация]' '/ var / папки / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-ye9lkg.jpg [0] 'Команда:: определить -формат% m' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r6 -format %m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]' Команда:: определить -формат% m '/ var / folder / q1 / txykj42x56f0_f0_0_f4_0_4_f0_0_4_f4_0_4_4_f_0_4_f_0_4_0_2_0_4_0_0_0_0_0_0_4 -ye9lkg.jpg[0]' Command:: convert '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]' -auto-orient -resize "x300x -crop" +0 "+ repage '/ var / folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg20140129-1873-1elyw4x' Command:: file -b --mime '/var/folder / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-ye9lkg201401wforx '% % h,% [exif: Ориентация]' '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]'Команда:: identifier -format % m' / var / folder / q1 / tn0gn4x4x4_4 /T/_MG_425620140129-1873-ye9lkg.jpg[0] 'Command:: identifier -format %m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[.gif[j формат%m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg.jpg[0]' Command:: convert '/var/folders/q1/txykj42x56g0v_4s0g0010/25/25/25/25/25/25/25/25/3 0] '-auto-orient -resize "x100" -crop "100x100 + 25 + 0" + repage' / var / folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg20140129-1873-1uzbr b - mime '/ var / folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-ye9lkg20140129-1873-1uzuzbr'(0,2 мс) начать транзакцию DBG: TERMS => "1" Событие существует (0,3 мс) ВЫБЕРИТЕ 1 КАК один "ИЗ" события "ГДЕ (" события "."title) " = 'fecha' AND "events"."timeline" = '2014-01-30 11:00:00.000000') LIMIT 1 Двоичные данные вставлены для string введите в столбце photo_content_type SQL (1,2 мс) INSERT INTO "события" ("адрес", "город", "созданный_кат", "описание", "тип_объекта", "обработчик_темплей", "имя_конфигурации", "фото_контент_тип", "имя_файла_файла", "фото_файл_сайта", "photo_updated_at", "promoter_id", "провинция", "timeline", "title", "updated_at", "youtube_video") ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [["address", "Cl. albasanz 72"], ["city", "Madrid"], ["creation_at", ср., 29 января 2014 г. 13:37:17 CET +01:00], ["описание", "

Lorem

\ r \ n "], [" event_type "," conciertos "], [" fee_handler ", 0], [" location_name "," Sala Lapusuvi "], [" photo_content_type "," image / jpeg "], [" photo_file_name "," _MG_4256.jpg "], [" photo_file_size ", 360091], [" photo_updated_at ", ср., 29 января 2014 13:37:16 CET +01:00], ["promoter_id", 2], [" провинция "," Мадрид "], [" график времени ", чт, 30 января 2014 г. 12:00:00 CET +01:00], ["title", "fecha"], ["updated_at", ср., 29 января 2014 г. 13:37:17 CET +01:00], ["youtube_video", ""]] SQL (0,6 мс) INSERT INTO "event_tickets" ("made_at", "event_id", "name", "price", "stock", "updated_at") ЗНАЧЕНИЯ (?,?,?,?,?,?) [["creat_at ", ср., 29 января 2014 13:37:17 CET +01:00], ["event_id", 98], ["name", "General"], ["price", 10.0], ["stock", 10], ["updated_at", ср., 29 января 2014 13:37:17 CET +01:00]] (24,6 мс) зафиксировать транзакцию. EventTicket Load (0,4 мс) ВЫБРАТЬ "event_tickets".* FROM "event_tickets" ГДЕ "event_tickets"."Event_id" =? [["Event_id", 98]] Command:: identifier -format '%wx%h,%[exif: ориентация] '' / var / folder /q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0]'Команда:: идентификация -формат% m' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_-az0_0_080_010_25_25_25_25_4 -формат%m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0]' Command:: определить -формат% m '/ var / folder / q1 / txykj42x56g0_0010_f4_4_f4_4_f4_0_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_f_4 -azu3y8.jpg [0] 'Command:: convert' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0] '-auto-orient -resize "250"' / var / folder / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-azu3y820140129-1873-1jxdah6' Command:: файл -b --mime '/ вар / папки / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-azu3y820140129-1873-1jxdah6' Command:: определить -формат '% wx% h,% [exif: ориентация]' '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0]' Команда:: определить -формат% m '/ var / папки / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / Т /_MG_425620140129-1873-azu3y8.jpg[0] 'Команда:: определить -формат% m' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_GG_425620140129-1873-azu3y8.jpg[0 'Command%] m '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0]' Command:: convert '/var/folders/q1/txykj42x56g0v_4pfn_Mg0/0/01/3/25/256253) '-auto-orient -resize "x300" -crop "300x300 + 75 + 0" + repage' / var / folder / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-azu3y820140129-1873-1uqbb2o2b2o -mime '/ var / folder / q1 / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-azu3y820140129-1873-1uq5p2o' Команда:: определить -формат '% wx% h,% [exif: ориентация]' 'q1 /txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0] 'Команда:: определить -формат% m' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r6 определить -формат% m '/ var / folder / q1 / txykj42x56g0v_4pfn_3fs0r00 00gn / T / _MG_425620140129-1873-azu3y8.jpg [0] 'Команда:: определить -формат% m' /var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[x '/var/folders/q1/txykj42x56g0v_4pfn_3fs0r0000gn/T/_MG_425620140129-1873-azu3y8.jpg[0]' -auto-orient -resize "x100" -crop "100x100 + 25 + 0" + repage1 / var / q / folder / / txykj42x56g0v_4pfn_3fs0r0000gn / T / _MG_425620140129-1873-azu3y820140129-1873-q03px0 'Команда:: файл -b --mime' / var / folder / q1 / txykj42x56g0v_4pfn / 0/2/0/0/0/0/0/0: 0: 0: 0: 0: 0: 0: 0: 18: 0: 0: 0: 0: 0: 0: 0: 0: 18: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 28: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 18?!?!?!??! начать транзакцию DBG: TERMS => "1" Событие существует (0,3 мс) ВЫБЕРИТЕ 1 КАК ЕДИНИЦУ "events" WHERE ("events"."title" = 'fecha' AND "events"."timeline" = '2014-01-31 11:00:00.000000') ПРЕДЕЛ 1 Двоичные данные вставлены для string введите в столбце photo_content_type SQL (1.4ms) INSERT INTO "events" ("address", "city", "creation_at", "description", "event_type", "fee_handler", "location_name", "photo_content_type", "photo_file_name", "photo_file_size"), "photo_updated_at", "promoter_id", "провинция", "timeline", "title", "updated_at", "youtube_video") ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [["address", "Cl. albasanz 72"], ["city", "Madrid"], ["creation_at", ср., 29 января 2014 г. 13:37:18 CET +01:00], ["описание", "

Lorem

\ r \ n "], [" event_type "," conciertos "], [" fee_handler ", 0], [" location_name "," Sala Lapusuvi "], [" photo_content_type "," image / jpeg "], [" photo_file_name "," _MG_4256.jpg "], [" photo_file_size ", 360091], [" photo_updated_at ", ср., 29 января 2014 13:37:16 CET +01:00], ["promoter_id", 2], [" провинция "," Мадрид "], [" график времени ", пт, 31 января 2014 г. 12:00:00 CET +01:00], ["title", "fecha"], ["updated_at", ср., 29 января 2014 г. 13:37:18 CET +01:00], ["youtube_video", ""]] SQL (0,4 мс) INSERT INTO "event_tickets" ("made_at", "event_id", "name", "price", "stock", "updated_at") ЗНАЧЕНИЯ (?,?,?,?,?,?) [["creat_at ", ср., 29 января 2014 13:37:18 CET +01:00], ["event_id", 99], ["name", "General"], ["price", 10.0], ["stock", 10], ["updated_at", ср., 29 января 2014 13:37:18 CET +01:00]] [ скрепка] удаление /Users/fxjade/Documents/company/app/public/system/events/photos/000/000/098/original/_MG_4256.jpg [скрепка] удаление / Users / fxjade / Documents / company / app / public / система / события / фотографии / 000/000/098 / купить /_MG_4256.jpg [paperclip] удаление /Users/fxjade/Documents/company/app/public/system/events/photos/000/000/098/medium/_MG_4256.jpg [paperclip] удаление /Users/fxjade/Documents/company/app/public/system/events/photos/000/000/098/thumb/_MG_4256.jpg (18,1 мс) зафиксировать транзакцию Предоставлено promoter_mailer/event_created_email.html.erb (0,9 мс)

Это случалось с кем-то раньше?

Любые входные данные о том, почему делать это из консоли работает, но я не могу получить тот же самый компонент из контроллера?

1 ответ

Решение

Вы пытались использовать Event.new вместо @event.dup? Что-то вроде:

event = Event.new(@vent.attributes.except('id', 'photo_file_name', 'photo_content_type', 'photo_file_size', 'photo_updated_at')) # And any other attribute you don't want to copy
event.photo = @event.photo
event.save
Другие вопросы по тегам