Module: Spree::MetafieldDefinitionDecorator

Extended by:
ActiveSupport::Concern
Defined in:
app/models/spree/metafield_definition_decorator.rb

Overview

@gem-override spree_core-5.3.6/app/models/spree/metafield_definition.rb reason: 本家 MetafieldDefinition は key/namespace に normalizes :key, with: ->(v){ v.parameterize.underscore.strip } を掛けており、 parameterize が非ASCII(日本語)を除去するため、日本語のプロパティ名(「地図形式」「提供形態」等)を key にすると空文字になり、key 必須・name 必須(set_name_from_key も空)でバリデーションに失敗する。 ba_spree は既に Property / OptionType / OptionValue / FilterParam で 「parameterize を使わず日本語を保持する」方針を採用済み(ba_spree の各 *_decorator 参照)。 MetafieldDefinition も同方針に揃え、Spree 5.2 の product properties → metafields 移行で 日本語のプロパティ名をそのまま key/name として保持できるようにする。

実装メモ:

本家の normalizes は decorate_attributes で属性の型を NormalizedValueType でラップし、
before_validation(:normalize_changed_in_place_attributes) でも再正規化する。
後から normalizes を再宣言しても元の parameterize が累積して残るため、
いったん `attribute` で型をリセットしてラップを外し、normalized_attributes からも除外したうえで、
parameterize を使わない自前の正規化(前後空白の除去のみ)を宣言し直す。