0

ルビーを学ぶ過程で(私はJavaのバックグラウンドを持っています)。

ある値が別の値に割り当てられている割り当てステートメントがありますhash[:name_field]。しかし、右側のハッシュからの値が空白になることがありました。これは私のコードをクラッシュさせていたので、私は3値論理を.nil ?etc...で追加しました。

これが機能しないことに驚いています...エラーは次のとおりです:

undefined method `nil' for 1133:Fixnum (NoMethodError)

以下はコードです:

people_traffic.each do |person|

  person_record = DaysTraffic.new 

  person_record[:name] = person[:name_filed].nil ? 0 : person[:name_filed]
  person_record[:age]  = person[:age_field].nil ? 0 :  person[:age_field]

  person_record.save
end

なぜ私はの(NoMethodError)ために取得しているのですかnil?

ありがとうございました!

4

2 に答える 2

6

It should be .nil? (with a question mark) not .nil. So in your case, that would be:

person_record[:name] = person[:name_filed].nil? ? 0 : person[:name_filed]

You can actually write this much simpler like so:

person_record[:name] = person[:name_filed] || 0
于 2013-03-11T21:02:46.773 に答える
4

Because #to_i turns nil into 0, a good way to write something like this is:

person_record[:age] = person[:age_field].to_i
于 2013-03-11T21:06:25.740 に答える