이번 Rails 업데이트의 주요 변경 사항은 다음과 같습니다.
has_json을 위한 스키마 기반 JSON 접근
has_json 속성에 스키마 기반 접근 객체가 도입되어, UI 입력 문자열이 데이터베이스에 올바른 JSON 타입(boolean, integer, string)으로 저장됩니다. 중첩은 지원되지 않으며, 타입은 심볼 또는 기본값으로 설정 가능합니다.
ruby
class Account < ApplicationRecord
has_json :settings, max_invites: 10
end
a = Account.new
a.settings.max_invites = "100" # => 100 (Integer)
SecureRandom.base32 헬퍼 추가
SecureRandom에 SecureRandom.base32 헬퍼가 새로 추가되어, 무작위 Base32, 대문자, 사용자 친화적이며 대소문자를 구분하지 않는 문자열을 생성합니다.
ruby
SecureRandom.base32 # => "PAK1NG78CM1HJ44A"
PostgreSQL 타입 디코딩 복원
PostgreSQL의 bytea 및 money 컬럼에 대한 디코딩 기능이 복원되어, bytea는 바이너리 인코딩된 String으로, money는 BigDecimal로 정확히 디코딩됩니다.
ruby
ActiveRecord::Base.connection.select_value("select '12.34'::money").class
#=> BigDecimal
ActiveStorage 즉시 변형(immediate variants) 도입
ActiveStorage에 immediate 옵션이 추가되어 preprocessed와 유사하게 변형을 즉시 처리할 수 있게 되었습니다.
ruby
has_one_attached :avatar do |attachable|
attachable.variant :thumb, immediate: true
end
기타 주요 업데이트
-
ActionText RemoteImage URL 유효성 검사:
RemoteImage객체 생성 전 URL 유효성을 검사하여 오류를 방지하고MissingAttachable로 처리합니다. -
DevToolsController 도입: 개발 환경에서 Chromium DevTools 워크스페이스 연결을 용이하게 하는 내부 경로가 추가되었습니다.
-
ActionText API 축소:
ActionText::TrixEditor클래스 도입으로ActionText의 공용 API를 축소하기 위한 메서드 사용 중단이 진행됩니다.