我的数据库中有列(字符串类型)(postgres)=> "时间" 我希望通过" time"但它没有用。
我通过以下方式获取所有数据:
@results.order(:time).all;
我的列表看起来像这样
1:00:12
31:31
45:12
51:33
我该如何订购?也许可以在postgres中通过强制转换列或gsub在rails中进行吗?有人有想法吗?
答案 0 :(得分:4)
在rails中存储时间内容的正确方法是使用时间格式。即:
create_table :results do |t|
t.time :name_of_attributes
end
然后您可以通过以下方式轻松排序:
@results.all.order(:time => :asc)
参考:http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
编辑:
正如@Vucko所建议的那样,提问者可能希望将其格式化为数据库中的字符串。在这种情况下,添加一些相关方法应该不会太难:
# Add the following method to the `Result` model:
def parse_time
res = 0
time.split(":").reverse.each_with_index do |val, index|
res += val.to_i * (60 ** index)
end
res
end
# Then to sort it
@results.all.sort_by do |a, b|
a.parse_time <=> b.parse_time
end
我应该澄清第二种方法不是首选方法,因为它可能会更慢。