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