簡體   English   中英

在許多實例上有acts_as_taggable

[英]acts_as_taggable on many instances

這是示例:

@profiles = Profile.where(something: true)

而不是做:

@profiles.each do |profile|
  @some_user.tag(profile, :with => "paris, normandy")
end

有沒有辦法像這樣在一個調用中標記模型的所有實例?

@some_user.tag(@profiles, :with => "paris, normandy")

我認為沒有什么開箱即用的功能,但是如果您擔心性能/速度,可以直接使用Tagging模型進行批量標簽分配。

這是針對您的用例的代碼改編版,您仍然需要提供profile_ids和tag_ids。

Tagging.transaction do
  profile_ids.each do |pid|
    tag_ids.each do |tid|
      values = ["Profile", pid, tid].join(", ")
      Tagging.connection.execute "INSERT INTO taggings (taggable_type, taggable_id, tag_id) VALUES (#{values}) ON DUPLICATE KEY UPDATE id=id"
    end
  end
end 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM