2013-08-14 3 views
2

У меня есть много select вариантов в моих формах с набором возможных вариантов.Rails - где хранить коллекции

Например:

title_options = %w[Mr Mrs Miss Ms Dr] 

На мой взгляд, я Отрендерит select (с использованием formtastic):

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

В настоящее время, хотя, я храню варианты названия в виде helper файла со многими методами для каждого select:

module SelectHelper 
    def days_options 
    ... 
    end 

    def title_options 
    ... 
    end 

    .. 
end 

Затем в модель для проверки можно либо продлить этот помощник:

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

или дублируют опции:

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

Есть ли лучший способ сохранить коллекцию, например, в качестве метода в модели напрямую? Я не вижу необходимости хранить эти параметры в базе данных, поскольку они никогда не должны меняться.

ответ

1

Ну, для упрощения вещей вы можете хранить эти коллекции в константе внутри вашего класса.

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

Это похоже на правильный путь, чтобы пойти – Harry

+0

Там небольшая опечатка. Разумеется, это должно быть '{: in => TITLES}. – Tintin81

0

Вы можете попробовать использовать enumerated_attribute gem или некоторые из той же функциональности

Смежные вопросы