代码之家  ›  专栏  ›  技术社区  ›  Voldy

你通常把字体放在什么地方?

  •  3
  • Voldy  · 技术社区  · 14 年前

    这不是一篇博文,这是一个问题!
    说到类型,我的意思是我们有类型值和类型描述。我们可以有不同的类型(性别、大小、颜色等)和每个类型的值集合。 我们有两种选择:将类型保存在数据库或应用程序中。
    对我来说,保留整个表来存储每个类型的类型值是多余的。另一种方法是将类型存储在一个带有字段的表中:类型名称、类型值、类型描述。
    对我来说,更好的选择是在应用程序中保留类型。我有这样一个YML配置文件(实际上它是 SettingsLogic 设置文件):

    types:
      gender: "male female"
    

    通过这种方式,我可以验证表单输入:

    validates_inclusion_of :gender, :in => Settings.types.gender.split(/\s/)
    

    ru:  
      types:
        gender: 
          male: "Мужской"
          female: "Женский"
    

    要为select I准备选项集合,请使用以下helper方法:

    def genders
      genders = []
      Settings.types.gender.split(/\s/).each do |gender|
        genders << [t("types.gender.#{gender}"), gender]
      end
      genders
    end
    

    这种方法的缺点是必须保留db long类型值 女性的 f .
    所以我现在想一个杂凑:

    def genders
      genders = []
      gender_types = { :m => "male", :f => "female" }
      gender_types.each do |key, value|
        genders << [t("types.gender.#{value}"), key]
      end
      genders
    end
    

    但现在我没有答案在哪里保存散列,就像我在配置文件中使用字符串一样。正如我所提到的,这个散列不仅可以从helper方法访问,也可以在验证中访问。

    所以问题很宽泛:如何保持类型?最好或更好的方法是什么?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Andrea Pavoni    14 年前

    class RealtyRequest < ActiveRecord::Base
       TYPOLOGY = { 'One' => 1, 'Two' => 2, 'Three' => 3 }
    
       def typology
         TYPOLOGY.invert[typology_id]
       end
     end
    

    模型是一个实表,我存储一个整数值,然后用一个方法得到字符串值。

    <div class="field">
      <%= f.label :typology_id %><br />
      <%= f.select :typology_id, RealtyRequest::TYPOLOGY %>
    </div>
    

    干杯,

    答。