1

Rails 프로젝트를 3.2.22.5에서 4.0.0으로 업그레이드하는 과정을 거치고 있습니다. 어떻게해야합니까? 배열은 두 버전간에 데이터베이스에 저장됩니다. 3.2 레일 나는이Rails 3.2에서 Rails 4로 업그레이드 한 후 배열을 문자열로 저장

def create 
    entry = current_user.tdr_entries.create() 
    entry.update_attributes(params[:tdr_entry]) 
    if entry.save 
    result = 'ok' 
    end 
    render text: result || 'fail' 
end 

params 객체를 파라미터는 다음

{"tdr_entry"=>{"value"=>["Eyes", "Hair", "Blood", "", "", ""], "multi"=>"true"}} 

에서 같은 값을 전달하는 컨트롤러에서 동작을 만들 수 있습니다

는, 값은 문제없이 데이터베이스에 저장하고 다음과 같습니다 콘솔에서 :

=> "---\n- Eyes\n- Hair\n- Blood\n- ''\n- ''\n- ''\n" 

하지만 레일 4로 업그레이드 한 후에는 같은 일을하려고 할 때 오류가 발생했습니다.

ActiveRecord::StatementInvalid (TypeError: can't cast Array to text: 

배열을 레일스 3.2에서 이전과 동일한 형식의 문자열로 변환하려면 어떻게해야합니까?

가능합니까? 또는 레일 4에서 어떻게 작동하는지 완전히 리팩터링하고 직렬화해야합니까?

건배.

+0

데이터베이스 사용합니까? BTW, 그 "--- \ n ..."'물건은 YAML 형태의 배열처럼 보입니다. –

답변

0

이 당신을 얻을 수 있습니다 대부분의 방법 :

>> hash = {"tdr_entry" => {"value" => ["Eyes", "Hair", "Blood", "", "", ""], "multi" => "true"}} 
>> hash['tdr_entry'].transform_values { |set| Array.wrap(set).join("\n- ") } 
=> {"value"=>"Eyes\n- Hair\n- Blood\n- \n- \n- ", "multi"=>"true"} 
+2

Rails 콘솔의'''눈 '', '머리카락', '혈액' '' '' '' '' '' ''. –

+0

아. 그렇습니다. :) – moveson

관련 문제