f5b632ed89
Reviewed-on: #397 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
28 行
768 B
Ruby
28 行
768 B
Ruby
class UserThemeSlot < ApplicationRecord
|
|
BASE_THEMES = ['light', 'dark'].freeze
|
|
SLOT_NOS = [1, 2, 3].freeze
|
|
|
|
belongs_to :user
|
|
|
|
validates :user_id, presence: true
|
|
validates :base_theme, presence: true, inclusion: { in: BASE_THEMES }
|
|
validates :slot_no, presence: true, inclusion: { in: SLOT_NOS }
|
|
validates :tokens, presence: true
|
|
validates :user_id, uniqueness: { scope: [:base_theme, :slot_no] }
|
|
|
|
validate :tokens_must_be_object
|
|
|
|
def serializable_hash(options = nil)
|
|
hash = { only: [:base_theme, :slot_no, :tokens, :created_at, :updated_at] }
|
|
super(hash.merge(options || {}))
|
|
end
|
|
|
|
private
|
|
|
|
def tokens_must_be_object
|
|
return if tokens.is_a?(Hash)
|
|
|
|
errors.add(:tokens, 'は JSON object で指定してください.')
|
|
end
|
|
end
|