У меня есть следующая модель datamapper:
class List
include DataMapper::Resource
property :id, Serial
property :author, String, :required => true,
:default => lambda { |r, p| @user_nick }
property :name, String, :required => true, :length => 1..255
property :created_at, DateTime, :default => lambda{ |r, p| Time.now }
has n, :items
end
class Item
include DataMapper::Resource
property :id, Serial
property :text, String, :required => true, :length => 1..255
belongs_to :list
end
Другими словами, список, содержащий ноль или более элементов.
Список еще не упорядочен.Мой вопрос: как мне это сделать?Я вижу два очевидных решения:
(a) увеличить Item
целым числом index
или
(b) увеличить Item
с помощью previous
и next
field, IOW реализует двусвязный список
Оба решения кажутся мне неэффективными и подверженными ошибкам (я годами не реализовывал связанный список или операции обхода и модификации, и даже тогда это было школьное упражнение).
Естьесть лучший способ?(Я не особо отношусь к производительности, это всего лишь прототип, а не реальное приложение, но я бы хотел получить «правильное» решение как с точки зрения надежности, так и с точки зрения производительности).Если это имеет значение, я использую бэкэнд AppEngine от Datamapper, но мне бы хотелось что-то, что также могло бы хорошо работать на СУБД.
Cheers