Rails 3: виртуальный атрибут Railscast #167 для создания тегов - @user.tags
Я хотел бы использовать систему тегов, в которой я могу разделить теги по пользователю, который их создал. Я следовал Railscast #167 о настройке тегов с использованием виртуальных атрибутов, но таким образом я могу только вызывать @post.tags, чтобы найти теги для поста, но я не могу позвонить @user.tags и найти все их теги.
Как я могу увеличить это так, чтобы @user.posts.tag("music") возвращал все свои сообщения с тегом music?
Спасибо за помощь или понимание того, что я делаю неправильно.
1 ответ
Решение
@user.posts
возвращает массив, так что вы можете довольно легко отфильтровать это примерно так:
@user.posts.select do |post|
post.tag_names.include? "music"
end
Однако вы можете столкнуться с проблемой, когда записи не загружаются в этой ситуации. Нечто подобное должно заботиться об этом:
Post.includes(:taggings => :tags).where("posts.user_id = ?", @user.id).select do |post|
post.tag_names.include? "music"
end