我正在做一个使用ActsAsTaggableOn的遗留项目,但看起来(根据文档)它并没有正常使用它?
我的 Reports 对象有几个 ActsAsTaggableOn 对象,例如 year_tags。
我正试图添加一个标签,并基于。https:/rubydoc.infogemsacts-as-taggable-on#usage。 我应该可以直接使用.NET技术。
report.year_tags.add("foo")
然而,这说。
NoMethodError: undefined method `add' for #<ActsAsTaggableOn::Tag::ActiveRecord_Associations_CollectionProxy:0x00007fbedb9134e8>
我可以列出 year_tags
并得到长度,当我输出它们时,我得到了预期的字符串(每行打印一个,但也许这对Ruby来说是正常的?
I year_tags确实有一个 push
方法,但该方法想要一个 ActsAsTaggableOn
对象,而不是字符串......这看起来很奇怪。
ETA:
花了更多的时间来研究这个,又多了一点细节。
似乎典型的使用方式是 ActsAsTaggableOn
是有一个单一的tag_list,但是,我们有几种不同类型的标签,所以我们有了 report.year_tags
和 report.level_tags
等等... 每一个看起来都是一个,也许是迭代器?ActsAsTaggableOn::Tag
对象还是类似的东西?
你可以使用 acts_as_taggable_one.g。acts_as_taggable_on :year_tags
然后你就可以做 year_tags_list.add "tag"
参照源码