【问题标题】:Rails 3: Railscast #167 virtual attribute for creating tags - @user.tagsRails 3:Railscast #167 用于创建标签的虚拟属性 - @user.tags
【发布时间】:2011-06-24 02:54:04
【问题描述】:

我想要一个标签系统,我可以通过创建标签的用户来分隔标签。我遵循 Railscast #167 关于使用虚拟属性设置标签的方法,但这种方式只能让我调用 @post.tags 来查找帖子的标签,但我不能调用 @user.tags 并找到它们的所有标签。

我怎样才能增强它,以便@user.posts.tag("music") 返回他们所有带有音乐标签的帖子?

感谢您提供帮助或了解我做错了什么。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 tags railscasts virtual-attribute


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多