Rails 6 Active Storage: не удалось найти или создать BLOB-объект: ожидается вложение ... (проблема при (пере) настройке вложения) - PullRequest
1 голос
/ 30 января 2020

В моем приложении администратор может предложить и отредактировать профиль другого пользователя. Я хотел бы, чтобы пользователь с правами администратора мог предложить (новый) аватар для пользователя без прав администратора. В настоящее время модель моего пользователя (user = spkr в моем приложении) имеет:

has_one_attached :image
has_one_attached :edited_image

Где image - изображение аватара, выбранное пользователем, а edited_image - изображение аватара, предложенное Администратор

При использовании административной формы «обновление» edited_image устанавливается

if spkr_params[:edited_image].present?
  @spkr.edited_image = spkr_params[:edited_image]
end

При этом успешно устанавливается вложение как edited_image.

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

...
if @spkr.edited_image.present?
   @spkr.image.purge
   @spkr.image = @spkr.edited_image
end
@spkr.save!

Однако я получаю следующую ошибку, которая возникает при @spkr.save!:

Could not find or build blob: expected attachable, got #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154... >>

Что является edited_image из @spkr:

@spkr.edited_image
=> #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154...>>

Мне кажется, что @ spkr.edited_image не является "присоединяемой частью" @ spkr.edited_image, но я не уверен, как решить эту проблему.

Спасибо за любую помощь.

1 Ответ

4 голосов
/ 31 января 2020

Я решил это, заменив строку

@spkr.image = @spkr.edited_image

на

@spkr.image = @spkr.edited_image.blob

Это также сработало:

@spkr.image.attach(@spkr.edited_image.blob)
...