【问题标题】:Why aren't all tags returned?为什么没有返回所有标签?
【发布时间】:2011-09-01 16:40:24
【问题描述】:

给定一个用户模型和一个品牌模型,以及acts_as_taggable_on,我有 2 个用户用 2 个标签标记了一个品牌。然后在控制台中:

>> b = Brand.last
=> #<Brand id: 37, name: "herp", user_id: nil>
>> b.users.count
=> 2
>> b.tags
=> [#<ActsAsTaggableOn::Tag id: 24, name: "firsttag">, #<ActsAsTaggableOn::Tag id: 25, name: "lasttag">]

这些是品牌 b 的标签,仅来自第一个用户。最后一个用户的标签没有显示。为什么?

编辑:使用 rails 3.0.9

  • Brand has_many tags, has_many brand_users 和 has_many users through brand_users
  • 用户 has_many :brand_users 和 has_many :brands, :through => :brand_users
  • BrandUser belongs_to :brand 和 belongs_to :user

以下是我的架构:

ActiveRecord::Schema.define(:version => 20110824083919) do

  create_table "brand_users", :force => true do |t|
    t.integer  "brand_id"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "brands", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "user_id"
  end

  create_table "taggings", :force => true do |t|
    t.integer  "tag_id"
    t.integer  "taggable_id"
    t.string   "taggable_type"
    t.integer  "tagger_id"
    t.string   "tagger_type"
    t.string   "context"
    t.datetime "created_at"
  end

  add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
  add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"

  create_table "tags", :force => true do |t|
    t.string "name"
  end

  create_table "users", :force => true do |t|
    t.string   "provider"
    t.string   "uid"
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 acts-as-taggable-on


【解决方案1】:

我没有正确使用宝石。浏览acts_as_taggable_on 的core.rb 文件,您会发现all_tags_on(context)。使用 b.tags 调用不带标注器的所有标签(如 SQL 查询中所示),因此使用以下命令可以为所有带有 tagger_type 或 tagger_id 的标签提供答案:

b.all_tags_on(:tags)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多