2016-06-28 259 views
0

所以我在我的數據庫中有表項。 我想在Item.name取代-字符是在的Item.name 月底所以我嘗試做這樣的:刪除字符串末尾的破折號字符

items = Item.all 
items.each do |it| 
it.name=it.name.gsub('/\-$/','') 
it.save 
end 

但它不工作。我該怎麼辦?

UPD: 我設法做到這一點是這樣的:

i = Item.all 
i.each do |it| 
it.name=it.name.chomp('-') 
it.save 
end 

但還是不知道爲什麼第一個變體沒有工作

+0

爲什麼在沒有必要的時候嘗試使用正則表達式? :) – Didi

回答

0

嘗試以下的話,會definatly爲你工作。

items = Item.all 
items.each do |item| 
item.name = item.name.gsub('-','') 
it.save 
end 
+0

這將從'name'字符串的任意位置刪除破折號,而不僅僅是結尾。 – snowangel

0

你應該使用這樣的:

items = Item.all 
items.each do |it| 
if name.end_with? '-' 
    it.name=it.name[0..-2] 
else 
    it.name=it.name 
end 
it.save 
end 

還是應該使用這個

items = Item.all 
items.each do |it| 
it.name=it.name.chomp('-') 
it.save 
end 
+0

我需要替換位於字符串末尾的'-'字符!你的函數將會取代所有'-'字符! –

+0

我在代碼中做了一些更改,請確保 – Sunny

0

你可以嘗試紅寶石sub!功能。

Ex。

it.name.sub!( 「 - 」, 「」)

!代表作爲爆炸的方法,所以你不必再存放起來item對象。