2017-11-30 8 views
0

CheckInモデルに:weekフィールドがあります。私は通常、私はまた、ユーザーに効果的に新しい順に結果:week属性を更新し再ために能力これらのレコードを、与える:weekアトリビュート別にソートされたアクティブなレコードオブジェクトを交換する

CheckIn.all.order(:week) 

することにより、これらのレコードを並べ替えます。問題は、私が:weekを更新すると、すでに:weekという数字のレコードがあることです。言い換えれば

私はこれで起動した場合:

ci1 = CheckIn.create(week: 0) 
ci2 = CheckIn.create(week: 1) 
ci3 = CheckIn.create(week: 2) 
ci4 = CheckIn.create(week: 3) 

、その後2にci2weekを更新:

ci2.update({ week: 2}) 

私はcheck_insの配列が残っていますが、2つのレコードが同じを持っています理想的には古い2が1になるときに、週の番号を更新する必要があります。

+0

週の列を一意にするように見えます。あなたは、before_saveフィルタを追加し、既存の週のチェックインを更新している場合は、週の値をスワップします – rajbir

答えて

2

このようにレコードの注文に役立つ宝石が数多くあります。ミドルリストを挿入すると、自動的に後続のレコードが「下」にプッシュされます。 acts_as_listまたはranked-modelをチェックしてください。

関連する問題