这是我的模型:
class Thing < Ohm::Model
attribute :created_at
index :created_at
end我无法按日期时间(created_at)对记录进行排序。
Thing.all.order_by(:created_at)
NoMethodError: undefined method `each' for #<RuntimeError:0x0000010537dec0>我知道在内部,一切都是以字符串的形式存储的,这可能就是问题所在。这看起来很奇怪,在图书馆里没有任何东西可以做这件事。
有什么建议吗?
发布于 2014-08-20 14:13:25
根据时间戳使用的值,通过created_at进行排序是很容易的。例如,如果使用Time.now.utc.to_i,则可以按以下方式对记录进行排序:
Thing.all.sort_by(:created_at)如果要按降序排序,可以这样做:
Thing.all.sort_by(:created_at, :order => "DESC")要迭代结果,可以使用each
Thing.all.sort_by(:created_at, :order => "DESC").each do |thing|
printf("Thing created on %s\n", Time.at(thing.created_at.to_i))
end如果安装ohm-contrib gem,您可以在模型中包含Ohm::Timestamps,它将添加和更新属性created_at和updated_at。
class Thing < Ohm::Model
include Ohm::Timestamps
index :created_at
end然后,您可以像前面的示例那样按created_at进行排序,但是在本例中,您不需要传递created_at值,因为每次创建模型时都会自动分配它。
https://stackoverflow.com/questions/25405589
复制相似问题