Ruby on rails Ruby三元运算符似乎没有处理哈希赋值

Ruby on rails Ruby三元运算符似乎没有处理哈希赋值,ruby-on-rails,ruby,Ruby On Rails,Ruby,在学习ruby的过程中(我有java背景) 我有一些赋值语句,其中一个散列[:name\u field]的值被赋值给另一个。但右边散列的值有时为空。这使我的代码崩溃,因此我用.nil?等添加了三元逻辑 我很惊讶,虽然这不起作用。。。错误是: undefined method `nil' for 1133:Fixnum (NoMethodError) 代码如下: people_traffic.each do |person| person_record = DaysTraffic.new

在学习ruby的过程中(我有java背景)

我有一些赋值语句,其中一个
散列[:name\u field]
的值被赋值给另一个。但右边散列的值有时为空。这使我的代码崩溃,因此我用
.nil?
等添加了三元逻辑

我很惊讶,虽然这不起作用。。。错误是:

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?
(带问号)而不是
.nil
。因此,在您的情况下,这将是:

person_record[:name] = person[:name_filed].nil? ? 0 : person[:name_filed]
实际上,您可以这样简单地编写:

person_record[:name] = person[:name_filed] || 0
因为
#to_i
nil
转换为
0,
这样写的好方法是:

person_record[:age] = person[:age_field].to_i