编写一个 rake 任务来修改当前字符串,同时保留字符串的其余部分 Rails 4

Writing a rake task to amend current string while preserving the rest of the string Rails 4

我正在尝试编写一个 rake 任务,它将删除字符串的一部分,同时保留其余部分。我尝试了 chomp 和 slice,但无法正常工作。下面是当前的 rake 任务和它出现在我的数据库中的字符串。目前,它只会用 pets 列中列出的任何内容替换整个字符串。那不是我的objective。我需要删除对宠物的引用,同时将字符串的其余部分保留在便利设施列中。

fix_pets.rake

namespace :listings do
  desc 'Update old pets in DB'
    task fix_pets: :environment do
      Listing.all.each do |listing|
        if listing.amenities == "All pets ok"
          listing.update(amenities: listing.pets)
        elsif listing.amenities == "Pets upon approval"
          listing.update(amenities: listing.pets)
        end
      end
   end
end

数据库中的便利设施:

"Central A/C All pets ok Hardwood floors"

抽成任务完成后,便利设施栏应该只有:

"Central A/C Hardwood floors"

如果只想删除特定的匹配字符串,可以试试 gsub 我举个简单的例子,假设。

match_str="All pets ok"
str1 = "Central A/C All pets ok Hardwood floors"

然后

str2= str1.gsub( match_str, "")

或者如果您不想更改原始字符串

str1.gsub!( match_str, "")

你会得到你的字符串

"Central A/C Hardwood floors"

您可以相应更新您的rake任务,仅供参考

如果您想有条件地更改字符串,使用 include? 可能更好。

if listing.amenities.include? 'All pets ok '
  listing.update(amenities: listing.amenities.gsub('All pets ok ', ''))
end