在学习ruby的过程中(我有一个java背景)。
我有赋值语句,其中一个hash[:name_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?
谢谢!
答案 0 :(得分:6)
.nil?
(带问号)不应为.nil
。所以在你的情况下,那将是:
person_record[:name] = person[:name_filed].nil? ? 0 : person[:name_filed]
你实际上可以这样写得更简单:
person_record[:name] = person[:name_filed] || 0
答案 1 :(得分:4)
由于#to_i
将nil
变为0,
,所以写下这样的内容的好方法是:
person_record[:age] = person[:age_field].to_i