#ruby-on-rails-3 #list #crud #app-data
#ruby-on-rails-3 #Список #crud #приложение-данные
Вопрос:
В моем проекте rails у меня есть разные списки данных, которые я должен поддерживать с помощью операций CRUD, и каждый список не заслуживает модели или целых строительных лесов для его поддержки, каков наилучший способ справиться с этим в rails?
Теперь я использую модель списка с именем: 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:
Неплохо иметь модель без каркасов для ее поддержки. Я часто делаю это с моделями, подобными категории или тегу, которые часто создаются и управляются моделями, на которых они действуют. Так что не чувствуйте себя обязанным создавать целые строительные леса для простой модели.
Если вам не нужно сохранять данные в базе данных, вы всегда можете использовать ActiveModel, или если вам нужно сохранить и вы можете найти другую модель, которую можно использовать поверх, посмотрите сериализацию, это хороший способ сохранить свободные данные