Предположим, у меня есть модель обсуждения, и обсуждение может быть помечено. Эти теги связаны с обсуждением через таблицу тегов.
Я хочу определить метод .tagged_with (tag), который в основном будет делать:
def tagged_with
Discussion.where(#something about tags include the tag given)
end
У меня есть некоторые методы, которые могут быть полезны, уже настроены. Например, у меня есть tag_list
def tag_list
tags.map(&:name).joins(", ") #my tags are separated by commas, not spaces)
end
И если кто-то знает ответ на более простой вопрос обрезки модели обсуждения, основанной на одном теге, как я могу расширить ее, чтобы она была более адаптируемой - например, принимая аргумент из нескольких тегов и имея возможность указать, что любой или все нужно. EG:
Discussion.tagged_with(tag1, tag2, :any => true)
К вашему сведению код из ассоциаций:
has_many :taggings, :as => :taggable
has_many :tags, :through => :taggings, :source => :tag, :source_type => "Tag"