【问题标题】:ActsAsTaggableOn add tag to objectActsAsTaggableOn 将标签添加到对象
【发布时间】:2020-04-28 21:46:08
【问题描述】:

我正在处理一个使用 ActsAsTaggableOn 的遗留项目,但它看起来(根据文档)它没有正常使用它?

我的 Reports 对象有多个 ActsAsTaggableOn 对象,例如 year_tags。

我正在尝试添加标签,并且基于:https://rubydoc.info/gems/acts-as-taggable-on/#usage 我应该能够使用:

report.year_tags.add("foo")

但是,那说:

NoMethodError: undefined method `add' for #<ActsAsTaggableOn::Tag::ActiveRecord_Associations_CollectionProxy:0x00007fbedb9134e8>

我可以列出year_tags 并获取长度,当我输出它们时,我得到了预期的字符串(每行打印一个,但也许这对 Ruby 来说是正常的?)

我 year_tags 确实有一个 push 方法,但它需要一个 ActsAsTaggableOn 对象,而不是字符串......这看起来很奇怪。

预计到达时间:

更详细一点,花了更多时间看这个:

似乎使用ActsAsTaggableOn 的典型方式是有一个单一的tag_list,但是,我们有几种不同类型的标签,所以我们有report.year_tags,和report.level_tags,等等......每一个都出现成为一个,也许是迭代器?在ActsAsTaggableOn::Tag 对象列表中?或类似的东西?

【问题讨论】:

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


    【解决方案1】:

    你可以使用acts_as_taggable_on 例如acts_as_taggable_on :year_tags 那么你就可以做到year_tags_list.add "tag" see source code as reference

    【讨论】:

    • 这可能就是您所说的,但是:report.year_tag_list.add("bar") 有效。谢谢! (最后还需要report.save。除了我之外的每个人都可能很明显......)
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多