Нужна помощь с update_attributes - PullRequest
       0

Нужна помощь с update_attributes

0 голосов
/ 10 февраля 2011

Я надеялся, что кто-нибудь мог бы посмотреть на это и дать совет, как я могу сделать это действие лучше.Это работает так, как мне нравится, но, кажется, нет необходимости создавать два экземпляра модели.

Я чувствовал, что должен был это сделать, потому что, хотя update_attributes не будет обновлять базу данных в случае сбоя проверки, я все еще хотелчтобы экземпляр @user был доступен для отображения оригинального @ user.photo в представлении.Я использую скрепку.

Заранее большое спасибо.

def edit_avatar

    @user = User.find(@username_id)
    if params['post_data'].present?
        @user.update_attributes(params[:post_data])
        @errors = @user.errors
        if @user.errors.count == 0
            @start_jcrop = true
        else
            @user = User.find(@username_id)
        end
    end
end

1 Ответ

0 голосов
/ 10 февраля 2011

Вместо перезагрузки модели вы можете использовать функцию Грязные изменения . Или вы можете использовать

@user.reload

вместо создания нового экземпляра.

@user = User.find(@username_id)
  ...
  else
      @user.reload
  end
end

Вы также можете упростить представление следующим образом

@user = User.find(@username_id)
if params['post_data'].present?
  if @user.update_attributes(params[:post_data])
    @start_jcrop = true
  else
    @errors = @user.errors
    @user.reload
  end
end

и если вы пропустите перезагрузку

@user = User.find(@username_id)
if params['post_data'].present?
  if @user.update_attributes(params[:post_data])
    @start_jcrop = true
  else
    # render
    # the previous image is available at
    # @user.attribute_name_was
  end
end
...