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
Другие вопросы по тегам