acts_as_taggable во многих случаях

Вот пример:

@profiles = Profile.where(something: true)

Вместо того, чтобы делать:

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

Есть ли способ пометить все экземпляры модели одним вызовом, например так:

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

1 ответ

Я не думаю, что есть что-то из коробки, чтобы сделать это, но посмотрите на непосредственное использование модели тегов для массового назначения тегов, если вы беспокоитесь о производительности / скорости.

Вот адаптация кода для вашего случая использования, вам все еще нужно предоставить 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 
Другие вопросы по тегам