Ruby on rails 在Rails中,将字符串从日期转换为日期
我有这样一个字符串:Ruby on rails 在Rails中,将字符串从日期转换为日期,ruby-on-rails,ruby,string,hash,ruby-on-rails-5,Ruby On Rails,Ruby,String,Hash,Ruby On Rails 5,我有这样一个字符串: {2=>1, 3=>1, 1=>2008} <%= user_record.date_select :response, { order: [:month, :day, :year], prompt: { day: 'Select day',
{2=>1, 3=>1, 1=>2008}
<%= user_record.date_select :response, {
order: [:month, :day, :year],
prompt: {
day: 'Select day',
month: 'Select month',
year: 'Select year'
},
start_year: Date.today.year - 12,
end_year: Date.today.year - 110
} %>
它是从如下所示的选择字段生成的:
{2=>1, 3=>1, 1=>2008}
<%= user_record.date_select :response, {
order: [:month, :day, :year],
prompt: {
day: 'Select day',
month: 'Select month',
year: 'Select year'
},
start_year: Date.today.year - 12,
end_year: Date.today.year - 110
} %>
我已经尝试过拆分字符串和剥离字符,但是Ruby中有更好的解决方案吗?您可以向模型中添加customer setter和getter方法,以便在来自视图的传入哈希和字符串类型数据库列之间进行转换 类似的方法可能会奏效:
def response
Date.parse(super)
end
def response=(value)
value = Date.new(value[1], value[2], value[3]) if value.is_a?(Hash)
super(value.to_s)
end
您是否考虑过将散列包装在PORO中(如在presenter和/或decorator模式中)?我相信getter在这里不起作用,您需要将保存在数据库中的字符串(“{2=>1,3=>1,1=>2008}”)转换为可读且可解析的日期格式。当然,当生产数据库中已经有无效记录时,它们也需要清理。不确定情况是否如此,或者OP是否已经注意到开发中的问题。