ActionWebService and dates
As I mentioned before, I have been having a few problems passing dates, date/times and times over ActionWebService.
I'm not too sure where the fault occurs but it seems to manifest itself in ActionWebService/casting.rb. Each field from your model is passed through as a value along with a type identifier. The areas where I am having problems are where that type is :date, :datetime or :time. In each case, casting.rb examines the type parameter and chooses to treat the value as a Date, DateTime or Time object respectively. Sounds sensible no?
But, somewhere along the line the type and the actual object do not match. If you call DateTime.parse(t.to_s) when t.is_a? Time you get an error. The call to parse only works if t.is_a? DateTime. The same applies for Date.parse and Time.parse.
I have amended casting.rb to get around this problem (starting at line 98):
when :time
value = "#{value['2']}/#{value['3']}/#{value['1']} #{value['4']}:#{value['5']}:#{value['6']}" if value.kind_of?(Hash)
if value.is_a? Time
return value
else
return Time.parse(value.to_s)
end
when :date
value = "#{value['2']}/#{value['3']}/#{value['1']}" if value.kind_of?(Hash)
if value.is_a? Time
return value
else
return Date.parse(value.to_s)
end
when :datetime
value = "#{value['2']}/#{value['3']}/#{value['1']} #{value['4']}:#{value['5']}:#{value['6']}" if value.kind_of?(Hash)
if value.is_a? Time
return value
else
DateTime.parse(value.to_s)
end
However, this is just a bandage on the symptom and does not solve the underlying cause. I'm still hunting for that one.
PS: Of course, if you want to deploy your application to a different server you're as well to freeze Rails into your application's vendor folder to make sure your amendments aren't forgotten.
No comments:
Post a Comment