1

Railsプロジェクトを3.2.22.5から4.0.0にアップグレードするプロセスを進めています。配列は2つのバージョン間でデータベースに保存されます。Rails 3.2からRails 4へのアップグレード後に配列を文字列として保存

私は値が問題なくデータベースに保存し、このようになり、これはのparamsは、レール3.2では、以下の

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

のように値を渡しているコントローラ

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 

でアクションを作成する必要がありコンソールから:

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

しかし、Rails 4にアップグレードした後は、同じことをしようとするとエラーが発生します。

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

配列を、以前のRails 3.2と同じフォーマットの文字列に変換するにはどうすればよいですか?

これは可能ですか?またはこれをレール4でどのように動作させてシリアル化するかを完全にリファクタリングする必要がありますか?

乾杯。

+0

は、データベース、あなたが使っていますか?それは、配列の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 'コンソールの ''目、 ''髪 ''、 ''血まみれ '' ''、 '' '' '' ..to_yaml' –

+0

ああ。そうです。 :) – moveson

関連する問題