У меня есть отношения 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 em> и c со значением порядка = 2.
У меня возникли проблемы с установкой значений заказа. Насколько я могу судить, дружба на самом деле не создается, пока a не будет сохранена, поэтому я не могу обновить их перед сохранением. И я не могу обновить их после сохранения, потому что заказ потерян.
Любые идеи?