我正在为我的 Rails 应用程序制定一些规范,这些规范涉及在数据库中重新排序模型。
由于事先不知道模型 ID,我不想硬编码“模型 ID 列表应该是 [1,2,3]”,所以我只是在创建它们时将它们收集在一个数组中,例如
(1..3).each
ids << Model.create().id
Model.find(:all, order: position).should == ids
无论如何,我想测试我的重新排序逻辑,它需要一个有序 ID 列表:
Model.reorder( [3,1,2] ) # will change position in db
为了保持干燥,我只是这样做:
reordered_ids = [ids[3], ids[1], ids[2]]
Model.reorder( reordered_ids )
Model.find(...).should == reordered_ids
我很好奇是否有更优雅的方式来做
reordered_ids = [ids[3], ids[1], ids[2]]
这有效,但似乎并不好:
[3,1,2].collect{|i| ids[i] }
有什么想法吗?