2011-09-19 1 views
1

Ruby 1.9.2를 사용하고 있으며 모든 것이 UTF-8 인코딩인지 확인하기 위해 테이블의 모든 값을 검토해야합니다. 컬럼이 많아서 column_names 메소드를 사용하여 루프를 모두 수행하고 값을 UTF-8로 인코딩 할 수 있기를 바랬습니다. 나는이 작업을 거라고 생각 :레일스 용 Ruby send (attribute.to_sym) 메소드

def self.make_utf 
    for listing in Listing.all 
    for column in Listing.column_names 
     column_value_utf = listing.send(column.to_sym).encode('UTF-8') 
     listing.send(column.to_sym) = column_value_utf 
    end 
    listing.save 
    end 

    return "Updated columns to UTF-8" 

end 

그러나 그것은 오류를 반환 :

syntax error, unexpected '=', expecting keyword_end 
     listing.send(column.to_sym) = column_value_utf 

내가 제대로이 일을하는 방법을 알아낼 수 없습니다.

답변

9

당신은 잘못 send을 사용하고 당신은 당신이 원하는 무엇에 대한 잘못된 기호 보내는 :

listing.send(column + '=', column_value_utf) 

을 당신이로 column_value_utf로 (일부 x 용) x= 메소드를 호출하려는를 논쟁, 그게 o.x = column_value_utf 정상적으로 할거야. 따라서 올바른 메소드 이름 (문자열 만 가능)을 작성한 다음 해당 메소드의 인수를 send에 인수로 전달해야합니다.

+0

고마워요, 그걸 해결하고 지금 그것을 사용하는 방법을 참조하십시오. – Frank