データベース内のモデルの並べ替えを含む、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
私がやっていることをDRYに保つために:
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] }
何かご意見は?