2016-06-28 3 views
0

그래서 내 데이터베이스에 테이블 항목이 있습니다. Item.name 그래서 나는 같이 그것을하려고 Item.name 의 끝에 - 문자를 대신에 내가 원하는 :문자열의 끝에있는 대시 문자를 삭제하십시오

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

을하지만이 작동하지 않습니다. 나는 무엇을해야합니까?

UPD

: 나는 이런 식으로 그것을 할 관리 : 첫 번째 변종이

+0

왜 필요하지 않을 때 regexp를 사용하려고합니까? :) – Didi

답변

0

그것이 definatly 당신을 위해 하나 아래를 작동하려고 작동하지 않는 이유

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

하지만 여전히는하지 않습니다.

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

이 응답 한 번 봐 가지고 사용해야합니다 Ruby, remove last N characters from a string?

을 그래서 당신은 단지를 사용할 수있다 chomp 방법 :

당신의 예에서 16,

:

items = Item.all 
items.each do |it| 
it.name=it.name.chomp 
it.save 
end 
0

당신은 루비의 sub! 기능을 시도 할 수 있습니다.

Ex.

it.name.sub! - 당신이 item 객체에 다시 보관이 필요하지 않도록 ("", "")는

!

는 빅뱅의 방법으로 나타냅니다.

관련 문제