【Rails6】간단 로그인·게스트 로그인 기능의 user 정보에 Active Storage를 이용하고 있는 경우

소개



간단 로그인 기능은 이하의 기사를 참고로 해, 구현했습니다.
꽤 알기 쉬운 기사이므로, 간단한 로그인을 구현할 때는 꼭 참고해 주세요.

이 기사는 위 기사의 추가 정보입니다.

사용자 정보에 Active Storage를 사용하여 이미지 등록 설정을 하고 있다는 기사를 본 적이 없었기 때문에 작성해 보았습니다.

버전



루비 버전 ruby-2.6.5
Rails 버전 Rails:6.0.0

개요



위의 기사 이외에, 신규 등록 정보에 Active Storage를 이용하여 화상을 등록하고 있는 경우에, 구현에 필요한 기술에 대해 소개합니다.



결론



컨트롤러내에 이하의 image.attach의 기술을 실시한다.

app/controllers/homes_controller.rb

# 〜省略〜

def new_guest
    user = User.find_or_create_by!(nickname:'guest', email: '[email protected]', occupation: 'guest', position: 'guest', birth_day: '1990-10-10', sex_id: 2) do |user|
      user.password = SecureRandom.urlsafe_base64
      user.image.attach(io: File.open(Rails.root.join("app/assets/images/homekatajiten.png")), filename: "homekatajiten.png") # ←こちらです!
    end
    sign_in user
    redirect_to root_path, notice: 'ゲストユーザーとしてログインしました。'
  end

# 〜省略〜


보충 설명



Active Storage에서 image 열을 캡처하고 있으므로 users 테이블에 image 열을 attach합니다.

image 열을 find_or_create_by 메서드의 인수에 포함하면 오류가 발생합니다.
왜냐하면 user 테이블에 image 열이 없기 때문입니다.

이상입니다.

좋은 웹페이지 즐겨찾기