在 DataMapper 中对元素进行排序
Sorting elements in DataMapper
我有一个数据库,我需要按长度对整个 table 进行排序,但是我有堆栈。
require 'dm-core'
require 'dm-migrations'
require 'sinatra/reloader'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
class Item
include DataMapper::Resource
property :id, Serial
property :length, Integer
end
...
DataMapper.finalize
post '/items/sort/?' do
5.times do
val = rand(100)
Item.create(length: val)
end
Item.update(Item.sort_by { |_key, value| value })
redirect to('/items')
end
我怎样才能正确执行它,以便我的数据库更新为按 length
元素排序?谢谢。
Item.sort_by(&:length)
以上代码将帮助您达到预期的结果。
2.3.1 :001 > require './app.rb'
=> true
2.3.1 :002 > Item.all
=> [#<Item @id=1 @length=21>, #<Item @id=2 @length=85>, #<Item @id=3 @length=41>, #<Item @id=4 @length=71>, #<Item @id=5 @length=71>]
2.3.1 :003 > Item.sort_by(&:length)
=> [#<Item @id=1 @length=21>, #<Item @id=3 @length=41>, #<Item @id=4 @length=71>, #<Item @id=5 @length=71>, #<Item @id=2 @length=85>]
2.3.1 :004 >
我有一个数据库,我需要按长度对整个 table 进行排序,但是我有堆栈。
require 'dm-core'
require 'dm-migrations'
require 'sinatra/reloader'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
class Item
include DataMapper::Resource
property :id, Serial
property :length, Integer
end
...
DataMapper.finalize
post '/items/sort/?' do
5.times do
val = rand(100)
Item.create(length: val)
end
Item.update(Item.sort_by { |_key, value| value })
redirect to('/items')
end
我怎样才能正确执行它,以便我的数据库更新为按 length
元素排序?谢谢。
Item.sort_by(&:length)
以上代码将帮助您达到预期的结果。
2.3.1 :001 > require './app.rb'
=> true
2.3.1 :002 > Item.all
=> [#<Item @id=1 @length=21>, #<Item @id=2 @length=85>, #<Item @id=3 @length=41>, #<Item @id=4 @length=71>, #<Item @id=5 @length=71>]
2.3.1 :003 > Item.sort_by(&:length)
=> [#<Item @id=1 @length=21>, #<Item @id=3 @length=41>, #<Item @id=4 @length=71>, #<Item @id=5 @length=71>, #<Item @id=2 @length=85>]
2.3.1 :004 >