У меня есть DataMapper, отношения многие ко многим, друзья, которые нужно хранить в
порядок. Каков наилучший способ поддерживать порядок? Я разместил заказ недвижимости
в модели объединения, но не может найти хороший способ ее обновить.
Мой код:
class Person
include DataMapper::Resource
property :id, Serial
property :name , String, :required => true
has n, :friendships, :child_key => [ :source_id ]
has n, :friends, self, :through => :friendships, :via => :target
end
class Friendship
include DataMapper::Resource
property :source_id, Integer, :key => true, :min => 1
property :target_id, Integer, :key => true, :min => 1
property :order, Integer
belongs_to :source, 'Person', :key => true
belongs_to :target, 'Person', :key => true
end
a = Person.new
b = Person.new
c = Person.new
a.friends = [b, c] # Keep in this order
a.friends == [b, c] # This should be true
a.friends != [c, b]
a.save
Спаситель a должен создать дружбу между a и b со стоимостью заказа = 1
а также вторая дружба между a и c со стоимостью заказа = 2.
У меня были проблемы с установкой значений заказа. Из того, что я могу сказать, дружба на самом деле не создается до тех пор, пока a не будет сохранено, поэтому я не могу обновить их перед сохранением. И я не могу обновить их после сохранения, потому что заказ потерян.
Есть идеи?