La forma más sencilla sería agregar atributos directamente al modelo de Producto a través de migraciones. Las validaciones se pueden agregar a través del uso de decoradores, el patrón preferido dentro de Spree para reemplazar los modelos.
# in app/models/product_decorator.rb
Product.class_eval do
validates :some_field, :presence => true
end
Otra opción sería crear un modelo secundario para sus campos extendidos. Tal vez ProductExtension
# in app/models/product_extension.rb
class ProductExtension < ActiveRecord::Base
belongs_to :product
validates :some_field, :presence => true
end
# in app/models/product_decorator.rb
Product.class_eval do
has_one :product_extension
accepts_nested_attributes_for :product_extension
delegate :some_field, :to => :product_extension
end
Luego, en los formularios de creación de productos puede proporcionar estos campos con fields_for. Creo que una advertencia con esto es que va a necesitar tener el modelo de Producto creado antes de que la extensión sea utilizable. Probablemente puedas evitar esto con un poco de lógica extra en los controladores de producto para crear acción.