#ruby-on-rails
Вопрос:
Я заметил, что мой текстовый редактор вставил несколько странных символов, которые необходимо заменить. У меня есть около 13 записей, каждая из которых содержит, возможно, 6-7 столбцов, содержащих текст, который необходимо заменить этим символом. Вот что я сделал, чтобы придумать вариант:
Assessment.find(1039).issues.each do |issue|
issue.attributes.each do |attribute|
issue.attributes.keys.each do |key|
if issue.attributes[key].to_s.include? "u2019"
issue.update(key, issue.attributes[key].gsub("u2019", "'"))
end
end
end
end
Однако это не работает, так как я получаю следующую ошибку:
Traceback (most recent call last):
6: from (irb):212
5: from (irb):213:in `block in irb_binding'
4: from (irb):213:in `each'
3: from (irb):214:in `block (2 levels) in irb_binding'
2: from (irb):214:in `each'
1: from (irb):216:in `block (3 levels) in irb_binding'
ArgumentError (wrong number of arguments (given 2, expected 1))
Как бы я этого добился?
Ответ №1:
ActiveRecord::Persistence#update
получает один аргумент, представляющий собой хэш, содержащий ключи (столбцы) и значения (значения обновления) для использования в инструкции UPDATE.
Попробуйте вместо этого:
issue.update(key => issue.attributes[key].gsub("u2019", "'"))
Я мог бы порекомендовать вам получить каждую проблему по их assesment_id
(если она существует), а затем find_each
, возможно, если количество записей достаточно велико.