2013-08-14 8 views
2

J'ai de nombreuses options select dans mes formulaires avec une collection d'options possibles.Rails - où stocker les collections

Par exemple:

title_options = %w[Mr Mrs Miss Ms Dr] 

À mon avis, je vais rendre le select (en utilisant formtastic):

<%= f.input :title, :as => :select, :collection => title_options %> 

Actuellement, cependant, je stocke les options de titre dans un fichier helper avec de nombreuses méthodes pour chaque select:

module SelectHelper 
    def days_options 
    ... 
    end 

    def title_options 
    ... 
    end 

    .. 
end 

Puis, dans un modèle de validation, je peux soit étendre cette aide:

class user < ActiveRecord::Base 
    extend SelectHelper 
    validates :title, :inclusion => {:in => title_options} 
end 

ou dupliquer les options:

class user < ActiveRecord::Base 
    validates :title, :inclusion => {:in = %w[Mr Mrs Miss Ms Dr]} 
end 

Y at-il une meilleure façon de stocker la collection, par exemple, en tant que méthode dans le modèle directement? Je ne pense pas qu'il soit nécessaire de stocker ces options dans une base de données car elles ne devraient jamais changer.

Répondre

1

Eh bien, pour simplifier les choses, vous pouvez stocker ces collections dans une constante à l'intérieur de votre classe.

class User < ActiveRecord::Base 
    TITLES = %w[Mr Mrs Miss Ms Dr] 
    validates :title, :inclusion => {:in => TITLES} 
+0

Cela semble être la bonne façon d'aller – Harry

+0

Il y a une petite faute de frappe. Ce devrait être '{: in => TITLES}' bien sûr. – Tintin81

Questions connexes