Я хочу найти все сообщения, помеченные тегами, которые передаются в массиве params.В сообщении есть много тегов через ассоциацию.
В настоящее время мой код выглядит следующим образом:
if params.has_key?(:tags)
params[:tags].each do |tag|
@tags = Array.new if @tags.nil?
@tag = Tag.find_by_content(tag)
@tags << @tag if @tag
end
@allposts = Post.followed_by(@user).select { |p| p.tags.size != 0 && (p.tags & @tags).size == p.tags.size }
else
@allposts = Post.followed_by(@user)
end
Что я в основном делаю, так это нахожу фактические модели тегов в соответствии с массивом params и помещаю их вмассив, затем я запускаю запрос на выборку для всех постов, ищущих те же массивы тегов.
Есть ли лучший и более чистый способ сделать это?