Ruby on rails Ruby三元运算符似乎没有处理哈希赋值
在学习ruby的过程中(我有java背景) 我有一些赋值语句,其中一个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
散列[: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