Ruby 日期字符串错误

Ruby 日期字符串错误,ruby,string,date,Ruby,String,Date,当我试图通过终端中的IRB添加日期时: song.released_on = Date.new(2013,10,10) 它表示存在以下错误TypeError:没有将日期隐式转换为字符串 在此代码中: def released_on=date super Date.strptime(date, '%m/%d/%Y') end 我已经试了好几个小时了,我知道但找不到问题。想知道有人能帮忙吗?您将日期实例传递给: 相反,您必须传递一个字符串(使用正确的格式): 守则: def release

当我试图通过终端中的IRB添加日期时:

song.released_on = Date.new(2013,10,10)
它表示存在以下错误
TypeError:没有将日期隐式转换为字符串

在此代码中:

def released_on=date
  super Date.strptime(date, '%m/%d/%Y')
end 

我已经试了好几个小时了,我知道但找不到问题。想知道有人能帮忙吗?

您将
日期
实例传递给:

相反,您必须传递一个
字符串
(使用正确的格式):

守则:

def released_on=date
  super Date.strptime(date, '%m/%d/%Y')
end
使用Date类的
strptime
(字符串解析时间)函数。它需要两个字符串,一个表示实际日期,另一个带有字符串格式化程序

要使事情正常运行,您需要做的就是改变:

song.released_on = Date.new(2013,10,10) # Wrong, not a string!
song.released_on = '10/10/2013' # Correct!
您还可以将函数更改为同时接受日期:

def released_on=date
  parsed_date = case date
    when String then Date.strptime(date, '%m/%d/%Y')
    when Date then date
    else raise "Unable to parse date, must be Date or String of format '%m/%d/%Y'"
  end
  super parsed_date
end

你的问题是什么?或者让
released\u on=
足够聪明,可以按原样传递
日期。
song.released_on = Date.new(2013,10,10) # Wrong, not a string!
song.released_on = '10/10/2013' # Correct!
def released_on=date
  parsed_date = case date
    when String then Date.strptime(date, '%m/%d/%Y')
    when Date then date
    else raise "Unable to parse date, must be Date or String of format '%m/%d/%Y'"
  end
  super parsed_date
end