, чтобы ответить на мой собственный вопрос, мое определение объема в A выглядит следующим образом:
scope :tagged_with, lambda { |tag|
{
:joins => "INNER JOIN taggings ON taggings.taggable_id = as.b_id\
INNER JOIN tags ON tags.id = taggings.tag_id AND taggings.taggable_type = 'B'",
:conditions => ["tags.name = ?", tag]
}
}
Это говорит о том, что возвращаются все модели A, чьи b-члены связаны с тегированием, если ассоциация тегов этого тега имеет значение «name», равное параметру, который мы передали. В этом примере B 'acts_as_taggable', A hasn ' т.
Это позволяет мне сделать:
a = A.new
b = B.new
b.tag_list = ['tag1', 'tag2', 'tag3']
a.b = b
new_a = A.tagged_with('tag1').ordered(...
#At this point new_a.last == a