我有一個集合類稱爲MYSET:銷燬 「具有n,:東西,:通過=>資源」 協會的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
我希望能夠向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 ==)
這是類似的,只是在MyElement描述DataMapper has n through Resource DELETE (Remove from association) not working問題不指定與MYSET的關聯。但是,我認爲該帖子中的解決方案就是我正在使用的,並且看起來不起作用。
事實上,使用「has n,:my_sets,:through => Resource」在MyElement中指定關聯沒有任何區別。 –