简单的模型..值得在内存类或只是把它放在数据库中?

时间:2011-06-24 15:54:23

标签: ruby-on-rails database ruby-on-rails-3 activerecord

抱歉标题不好,我不知道该怎么称呼这个问题。

我有一个简单的类,它基本上只包装一个数组并为它提供一些自定义访问方法。基本上它存储的是一个双重数组,每个都有一个属性类型,它是uid。

我的想法是,因为这是一个如此简单的用法,我可以摆脱只是构建这个类并将其保存在内存中而不是生成模型并承受ActiveRecord的开销(可能不是很多,我是不确定)。

我担心我会过度思考,我应该把它放在数据库中而忘记它?

class PropertyType
  extend Enumerable

  TYPES = [
      ['Site', 'Site'],
      ['New Home', 'NewHome'],
      ['Terraced House', 'Terraced'],
      ['Detached House', 'Detached'],
      ['Bungalow', 'Bungalow'],
      ['Townhouse', 'Townhouse'],
      ['End of Terrace House', 'EoTHouse'],
      ['Semi-Detached House', 'Semi-D'],
      ['New Development', 'NewDev'],
      ['Apartment', 'Apartment'],
      ['Duplex', 'Duplex'],
      ['House For Sale', 'House']
  ].freeze

  def self.each
    TYPES.each{|type| yield(type[0], type[1]) }
  end

  def self.convert_to_name(uid_to_lookup)
    return if uid_to_lookup.blank?
    TYPES.each{|type| return type[0] if type[1] == uid_to_lookup }
  end

  def self.convert_to_uid(name_to_lookup)
    return if name_to_lookup.blank?
    TYPES.each{|type| return type[1] if type[0] == name_to_lookup }
  end

  def self.each_uid
    TYPES.each{|type| yield(type[1]) }
  end

  def self.each_name
    TYPES.each{|type| yield(type[0]) }
  end

  def self.uids
    TYPES.collect{|type| type[1]}
  end

  def self.names
    TYPES.collect{|type| type[0]}
  end
end

1 个答案:

答案 0 :(得分:1)

我认为你的课很好,但我个人仍然把它放在数据库中,这样我就可以轻松选择为属性类型构建管理界面,让其他人随着时间的推移管理对它们的修改。