Простая модель ... стоит создать класс памяти или просто поместить его в базу данных? - PullRequest
0 голосов
/ 24 июня 2011

Извините за плохой заголовок, я не знаю, как назвать этот вопрос.

У меня есть простой класс, который в основном просто оборачивает массив и предоставляет для него несколько пользовательских методов доступа. По сути, все, что он хранит - это массив дублетов, каждый из которых содержит тип свойства и его идентификатор.

Моя идея заключается в том, что, поскольку это такое простое использование, я могу обойтись без простой сборки этого класса и его хранения в памяти, а не генерации модели и переноса издержек 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 Ответ

1 голос
/ 24 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...