2016-05-17 8 views
0

ruby​​ on railsのアクティブレコードメソッドによって返されるハッシュを持っています。Ruby on Railsで返されたアクティブレコードのハッシュ値を置換する

'professional_type'という名前の列があり、 'each'ループを使用して別の値に置き換える必要があります。

しかし、動作していません。

コードは:

collection.each_with_index { |(key, value), index | 

    if(key.professional_type == 'center_professional') 

     key.professional_type = 'test' # does nothing 
     key.professional_type << 'test' # this works and concats 'test' string to var 

    end 

} 

これはcollection.inspect結果である:私はCONCAT場合、それは変数に文字列を追加しますが、なぜ

[#<Professional id: 105, center_id: 20, name: "ABC", professional_type: "center_professional", created_at: "2014-05-28 12:21:48", updated_at: "2015-01-23 13:12:47", deleted_at: nil>, #<Professional id: 107, center_id: 20, name: "EDFG", professional_type: "center_professional", created_at: "2014-06-03 07:23:31", updated_at: "2015-01-23 13:15:35", deleted_at: nil>] 

私は、新しい値を割り当てる場合うまくいかない?私は何を間違っているのですか?

ありがとうございます。

+2

をワーク・必要がありますか?私はなぜあなたがループしているのか分からない、なぜあなたは 'collection [" center_professional "] = test'をしないのですか?私はあなたが明らかになるハッシュを表示すると仮定しています。 –

答えて

1

これはハッシュの例を提供することができます

collection.map { |key, value| 

    if(value == 'center_professional') 

    #concat key.professional_type + "<br>" 
    collection[key] = 'test' 
    end 
} 
+0

エラー:プロフェッショナルを整数に暗黙的に変換しません – viher

+0

'値'変数が空です – viher

1
collection.collect do |professional| 
    professional.professional_type = 'test' if(value == 'center_professional') 
    professional 
end 
+0

'値' var(存在しません)を 'professional'変数に置き換えて動作しません。次に、if条件を削除して、すべての 'professional_type'値を 'test'に置き換えようとしましたが、動作しません。 :( – viher

+0

ステージングサーバーにデプロイしていますか、問題を調べることができます。それ以外の場合は、収集して何を取得しているかを確認してください。 –

関連する問題