У меня есть коллекция класса под названием Инд.Сброс:Уничтожая "имеет п,: вещи,: через => Resource" ассоциаций в DataMapper
class MySet
include DataMapper::Resource
property :id, Serial
has n, :my_elements, :through => Resource
def add integer
unless my_elements.first(:integer => integer)
my_element = MyElement.create :integer => integer
my_elements << my_element
my_elements.save
end
self
end
def has_integer? integer
!my_elements.first(:integer => integer).nil?
end
def delete integer
if has_integer? integer
my_elements.first(:integer => integer).destroy
my_elements.save
end
self
end
def size
my_elements.size
end
end
и элемент класса под названием MyElement:
class MyElement
include DataMapper::Resource
property :id, Serial
property :integer, Integer
end
I хотите иметь возможность добавлять и удалять элементы на и из MySet. Тем не менее, следующие спецификации:
describe MySet do
subject do
MySet.create
end
it "adds and deletes" do
subject.add 1
subject.delete 1
subject.size.should == 0
end
end
терпит неудачу с:
Failure/Error: subject.size.should == 0
expected: 0
got: 1 (using ==)
Это похоже на проблемы, описанных в DataMapper has n through Resource DELETE (Remove from association) not working за исключением того, что MyElement не определяет ассоциацию с Инд.Сбросом. Тем не менее, я думаю, что решение в этом сообщении - это то, что я использую, и оно, похоже, не работает.
На самом деле, указывая ассоциацию в MyElement, используя «имеет n,: my_sets,: through => Resource», не имеет никакого значения. –