У меня есть задача rake, которую мне нужно запустить, чтобы обезопасить (удалить косые черты) некоторые данные в базе данных. Вот задача:Рельсы - Помощь с задачей рейка
namespace :db do
desc "Remove slashes from old-style URLs"
task :substitute_slashes => :environment do
puts "Starting"
contents = Content.all
contents.each do |c|
if c.permalink != nil
c.permalink.gsub!("/","")
c.save!
end
end
puts "Finished"
end
end
Что позволяет запускать rake db:substitute_slashes --trace
Если я puts c.permalink
после GSUB! Я вижу, что он правильно устанавливает атрибут. Однако спасение! похоже, не работает, потому что данные не изменены. Может ли кто-нибудь определить, в чем проблема?
Другое дело, у меня есть скрепка, и эта задача запускает [paperclip] Saving attachments.
, которого я бы предпочел избежать.
! = Nil отлично подходит, также строка # gsub может принимать строку в качестве своего первого аргумента. Третий момент, который я считаю верным, верен. – gunn
как я сказал, я просто не был уверен, но im 100% уверен, что .nil? делает :). im все еще не полностью убежден в том, что gsubive не смог заставить gsub работать в irb на mac Ruby v 1.8.1. 3.) определенно его проблема, В ЭТОМ СЛУЧАЕ, но его самой большой проблемой является то, что он не использует SQL. Это выполнимо, как я уже опубликовал, - в ONE-заявлении, которое SOOOO намного быстрее, чем при создании объекта ActiveRecord для элемента EACH. Вместо этого он мог бы использовать .find_each вместо этого! – sethvargo
Удивительный. Здесь есть много самородков для рельсов newb. Я ценю, что вы тратите время, чтобы все это исправить. – jyoseph