Привязка Rails не сохраняется - PullRequest
1 голос
/ 27 мая 2020

У меня есть вложение

class User < ApplicationRecord
  has_one_attached :avatar

, когда я создаю пользователя, и я выполняю свое семя

user = User.create({"name":"pedro})
file = open("#{Rails.root}/app/assets/img/user.png")
user.avatar.attach(io: file, filename: "user.png")
the avatar gets attached

Однако, когда я пытаюсь воспроизвести / обновить его на моем контроллере:

user = User.find(params["id"])
user.avatar.purge
file = open("#{Rails.root}/app/assets/img/user.png")
user.avatar.attach(io: file, filename: "user.png")

Он каким-то образом прикрепляется (если я выполняю user.avatar.attached? До того, как он вернет false и true после того, как я его прикреплю), но blob не сохраняется / не сохраняется в хранилище. Каким-то образом он сохраняется только с вновь созданными объектами.

Я безуспешно пытался найти вопросы с аналогичной проблемой.

1 Ответ

0 голосов
/ 27 мая 2020

Я нигде не вижу, чтобы вы сохраняли его в базе данных. Попробуйте user.new вместо user.create. После прикрепления файла сохраните его.

user = User. new ({"name": "pedro})

file = open (" # { Rails.root} /app/assets/img/user.png ")

user.avatar.attach (io: file, filename:" user.png ")

user .save

рекомендуется добавить тип содержимого

user.avatar.attach (io: file, filename: "user.png", content_type: 'image / png' )

Edit (обновление комментария к операции): вы можете использовать user.save (validate: false) , чтобы пропустить проверки

...