DataMapper Вложенные условия: проблема подсчета - PullRequest
0 голосов
/ 09 мая 2011

Вот модели:

class Foo
  include DataMapper::Resource
  property :id, Serial
  has n, :foo_bars
  has n, :bars, :through => :foo_bars
end

class Bar
  include DataMapper::Resource
  property :id, Serial
  has n, :foo_bars
  has n, :foos, :through => :foo_bars
end

class FooBar
  include DataMapper::Resource

  belongs_to :foo, :key => true
  belongs_to :bar, :key => true
end

Вставка данных:

f = Foo.create
b1 = Bar.create
b2 = Bar.create
b3 = Bar.create
f.bars = [b1, b2, b3]
f.save

Итак, теперь у меня есть один foo, три bar с и foo имеет все bar с.Все в порядке.

Теперь я хочу запросить foo с bar # 1 и bar # 3:

Foo.all(Foo.bars.id => [1,3])
=> [#<Foo @id=1>] #ok
Foo.all(Foo.bars.id => [1,3]).count
=> 2 #why?

И вот вопрос: почему массивдлина равна 1, а количество коллекций равно 2?Как я могу получить оба 1?Я хотел бы придерживаться запроса с вложенными условиями.Это ошибка или неправильное использование?

DM 1.1.0

Ответы [ 2 ]

1 голос
/ 14 мая 2011

К сожалению, вы столкнулись с ошибкой. Я только что сообщил о проблеме с вашим приложенным примером: https://github.com/datamapper/dm-aggregates/issues/3

0 голосов
/ 07 июня 2013

Я думаю, что вы должны быть в состоянии получить правильный результат, сделав это сейчас:

Foo.count(Foo.bars.id => [1,3])
...