2012-12-05 2 views
0

내 테이블에 문자열 유형의 Attachment.attachment_content_type이 있습니다. 값은 다음과 같습니다.Rails는 문자열을받습니다. 어떻게 루비의 배열로 변환합니까?

[] 
[image/png] 
[application/msword, application/word, application/x-msword, application/x-word, text/plain] 

내가 원하는 것은 첫 번째 항목을 얻는 것입니다.

내가 분할을 사용해야하거나 말할 레일에 루비와 더 나은 방법이 '응용 프로그램/msword로 레이블을'

attachment.attachment_content_type[0] 

그러나 그것은 단지 반환 [하지 :

내가 함께 노력하고있어 레일이 배열인가? 감사합니다

+0

답은 아래에 올바른 솔루션입니다. 나는 이것이 왜 다소 어려운 문자열에 저장되는지에 대해 조금 궁금해합니다. 코드를 제어하는 ​​경우 ActiveRecord의'serialize'를 사용하여 실제 Ruby 배열을 저장/검색하거나 다른 테이블에 대한 has_many 관계를 만드는 것을 고려하십시오. –

+0

이것은 rails paperclip gem –

답변

3
$ cat foo.rb 

strings = [ 
    "[]", 
    "[image/png]", 
    "[application/msword, application/word, application/x-msword, application/x-word, text/plain]" 
] 

strings.each do |string| 
    array = string[1...-1].split(/[\s,]+/) 
    puts array[0] 
end 

$ ruby foo.rb 

image/png 
application/msword 
+1

에 의해 수행되고 있습니다. Rachel에 대한 설명으로, 값 "[]"'및 기타는 문자열이므로 구문 분석하여 배열로 변환해야합니다. –

1

attachment.attachment_content_type[1..-2].split(',').map(&:strip) 문자열의 내용을 배열로 반환합니다.

+0

http://m.onkey.org/let-s-start-with-wtf – MrYoshiji

0

gsub!scan을 사용해보세요.

mimetypes.gsub!(/([\[\]])/, '') 
mime_array = mimetypes.scan(/, /) 

정규식 테스트에 Rubular와 함께 흥미로운 방법에 대한 String API를 참조하십시오 :

관련 문제