Je ne pense pas que ce soit un cas rare, mais lors de la création d'une zone de sélection à partir d'énumération, notez comment modifier le libellé. Comme prémisse, «énumérer» et «reformer» sont utilisés pour la gemme.
product_form.rb
extend Enumerize
enumerize :fluit, in: {
  apple:      1,
  orange:     2,
  peach:      3,
  strawberry: 4,
  cherry:     5,
}, predicates: { prefix: true }
property :fluit
ja.yml
product:
  fluit:
    apple:pomme
    orange:Orange
    peach:Les pêches
    strawberry:fraise
    cherry:Cerise
Si vous l'écrivez normalement, c'est très bien.
new.slim
= f.select :fluit, f.object.class.fluit.options, {prompt: 'Sélectionnez un fruit'}
Cependant, supposons qu'on lui dise: «Je veux mettre les mots« (en vente spéciale) »pour« pommes »et« cerises »».
Cela dit, je ne veux pas changer ja.yml.
Ecrire un par un sans utiliser f.object.class.fluit.options est également peu maintenable.
Par conséquent, j'ai créé une méthode qui transforme le tableau généré par f.object.class.fluit.options avec une carte et ajoute le libellé et ne retourne que lorsqu'il s'agit d'une valeur spécifique.
product_form.rb
def fruit_select_display
  self.class.fluit.options.map do |key, value|
    if value == 'apple' || value == 'cherry'
      [key + '(Pendant la vente spéciale)', value]
    else
      [key, value]
    end
  end
end
new.slim
= f.select :fluit, f.object.fruit_select_display, {prompt: 'Sélectionnez un fruit'}
Avec cela, j'ai pu l'utiliser une fois.