gpt4 book ai didi

ruby-on-rails - Rails "acts-as-taggable-on": how to add tag *objects* to taggables, 不按名称

转载 作者:行者123 更新时间:2023-12-04 02:24:11 29 4
gpt4 key购买 nike

在数据导入器中,我有代码试图添加一堆 ActsAsTaggableOn::Tag对象到可标记的标签列表:

    existing_item = FeedItem.where(url: item[:url]).first

if existing_item.nil?
new_item = FeedItem.new

new_item.attributes = item.except(:id, :feeds)

new_item.feeds = Feed.where(id: feeds_old_to_new(item_feeds, feeds))
new_item.tag_list.add(
ActsAsTaggableOn::Tag.where(id: tags_old_to_new(item[:tags], tags)))

new_item.save!
else
# ... merge imported record with existing item ...
end

这不起作用,因为 tag_list.add需要一个标签名称列表,而不是标签对象。有没有办法添加标签对象?我在作为可标记行为的文档中找不到任何内容,而且它的代码太神奇了,我无法理解(例如, Tag::concat 似乎不会改变自我!)

我可以将标签映射到它们的名称,但随后作为可标记的行为将运行适用于用户输入但不适用于批量数据导入的名称规范化,所以我不想这样做。

最佳答案

gem 真的只是为你添加了这个:

has_many :taggings
has_many :tags, through: :taggings

(支持多种标签有点复杂,但 the details 非常简单。)

因此,您可以像使用其他任何关联一样使用这些关联。在你的情况下,它会是这样的:
ActsAsTaggableOn::Tag.where(id: tags_old_to_new(item[:tags], tags))).each do | t|
new_item.tags << t
end

关于ruby-on-rails - Rails "acts-as-taggable-on": how to add tag *objects* to taggables, 不按名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740207/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com