Как составить список данных, которые не принадлежат модели и не являются отдельной моделью в рельсах? - PullRequest
0 голосов
/ 23 мая 2011

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

Теперь я использую модель List с именем: string content: text, чтобы сохранить каждый список как запись списка и выполнить некоторый анализ, когда мне нужен какой-то список в моем приложении.Вот моя фактическая модель списка:

class NoListException < Exception
end

class List < ActiveRecord::Base
  validates :name, uniqueness: true

  def self.container_types
    get_list('container_types').collect do |b|
      b.split(',').collect {|c| c.split(':').last }
    end.collect {|p| "#{p.last} - #{p.first}" }
  end

  def self.location_categories
    get_id_value_list('location_categories')
  end

  def self.services_types
    get_list('services_types')
  end

  private

  def self.get_id_value_list(name)
    get_list(name).collect do |b|
      (b.split(',').collect {|c| c.split(':').last }).rotate
    end
  end

  def self.get_list(name)
    list = List.find_by_name(name)
    raise NoListException if list.nil?
    list.content.split(';')
  end
end

Я думаю, что это очень распространенная проблема, поэтому я спрашиваю, есть ли лучший способ обработки этих списков?

1 Ответ

0 голосов
/ 24 мая 2011

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

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

...