attachment_fu가 변경된 부착물 대신 모든 첨부 파일을 업데이트하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1363160

문제

나는 a가있는 속성 모델이 있습니다 has_many 그리고 accepts_nested_attributes_for 사용하는 이미지 모델에서 attachment_fu. 다음 코드를 사용하여 속성을 업데이트하면 변경 사항이 있는지 여부에 관계없이 모든 단일 이미지 (및 각 이미지 썸네일)에 대한 데이터베이스 업데이트가 발생합니다.

properties_controller.rb

  def update
    @property.update_attributes params[:property]
    redirect_to edit_property_path(@property)
  end

_form.html.erb

<% form_for @property do |property| %>  
  ...
  <ul id='image-admin'>
    <% @property.images.each do |image| %>
      <li>
      <%= image_tag image.public_filename(:front), :alt=> h(image.caption), :size => "218x160" %>
      <% property.fields_for :images, image do |img| %>
        <%= img.hidden_field :ordering, :class => 'order' %>
        <%= img.text_field :caption %>
        <span class='img_remove'>
          Remove ? <%= img.check_box '_delete' %>
        </span>
      <% end %>
      </li>
    <% end %>
  </ul>
  ...
<% end %>

스크립트/서버 출력

  SQL (8.7ms)   COMMIT
  SQL (0.1ms)   BEGIN
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 103402 WHERE `id` = 350
  Image Load (0.5ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'small' AND `images`.`parent_id` = 350) ORDER BY ordering ASC LIMIT 1
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 60535 WHERE `id` = 352
  Image Load (0.5ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'front' AND `images`.`parent_id` = 350) ORDER BY ordering ASC LIMIT 1
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 39888 WHERE `id` = 353
  Image Load (0.4ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'thumb' AND `images`.`parent_id` = 350) ORDER BY ordering ASC LIMIT 1
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 3510 WHERE `id` = 351
  SQL (0.9ms)   COMMIT
  SQL (0.1ms)   BEGIN
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 100387 WHERE `id` = 338
  Image Load (0.4ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'small' AND `images`.`parent_id` = 338) ORDER BY ordering ASC LIMIT 1
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:19', `size` = 58212 WHERE `id` = 340
  Image Load (0.4ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'front' AND `images`.`parent_id` = 338) ORDER BY ordering ASC LIMIT 1
  Image Update (0.8ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:20', `size` = 38101 WHERE `id` = 341
  Image Load (0.4ms)   SELECT * FROM `images` WHERE (`images`.`thumbnail` = 'thumb' AND `images`.`parent_id` = 338) ORDER BY ordering ASC LIMIT 1
  Image Update (0.3ms)   UPDATE `images` SET `updated_at` = '2009-09-01 15:17:20', `size` = 3241 WHERE `id` = 339
  SQL (0.8ms)   COMMIT

왜 그런지 (그리고 내가 멈출 수있는 방법) attachment_fu 이렇게하면? 크기 속성이 변경되었다고 생각하는 것처럼 보이지만 어떤 이유도 볼 수 없습니다 (내 코드에서 또는 attachment_fu) 왜 그렇게 생각 해야하는지.

도움이 되었습니까?

해결책 2

글쎄요 matchu Attachment_FU를 포크하고 문제 로이 문제를 해결했습니다. 913555. Technoweenie의 하나를 이것으로 대체하면 모든 문제가 해결되었습니다.

다른 팁

fields_for 연관의 모든 이미지에 대해 동봉 된 필드를 반복합니다. 그러나 반복되는 외부 루프가 있습니다 fields_for 협회의 모든 이미지에 대해. 결과를 제출할 때 보내고 싶은 것보다 더 많은 업데이트를 보내고 있습니다.

이 시도:

<% form_for @property do |property| %>  
  ...
  <ul id='image-admin'>
    <% property.fields_for :images, image do |img| %>
      <li>
      <%= image_tag img.object.public_filename(:front), :alt=> h(img.object.caption), :size => "218x160" %>
        <%= img.hidden_field :ordering, :class => 'order' %>
        <%= img.text_field :caption %>
        <span class='img_remove'>
          Remove ? <%= img.check_box '_delete' %>
        </span>
      </li>
    <% end %>
  </ul>
  ...
<% end %>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top