2017-08-31 12:06:56 +08:00
|
|
|
class MakePostNumberDistinct < ActiveRecord::Migration[4.2]
|
2013-02-06 03:16:51 +08:00
|
|
|
def up
|
|
|
|
|
2018-06-19 14:13:14 +08:00
|
|
|
DB.exec('update posts p
|
2013-02-26 00:42:20 +08:00
|
|
|
set post_number = calc
|
2013-02-06 03:16:51 +08:00
|
|
|
from
|
|
|
|
(
|
2013-02-26 00:42:20 +08:00
|
|
|
select
|
|
|
|
id,
|
|
|
|
post_number,
|
|
|
|
topic_id,
|
2013-02-06 03:16:51 +08:00
|
|
|
row_number() over (partition by topic_id order by post_number, created_at) calc
|
2013-02-26 00:42:20 +08:00
|
|
|
from posts
|
2013-02-06 03:16:51 +08:00
|
|
|
where topic_id in (
|
|
|
|
select topic_id from posts
|
|
|
|
group by topic_id, post_number
|
|
|
|
having count(*)>1
|
|
|
|
)
|
|
|
|
|
2013-02-26 00:42:20 +08:00
|
|
|
) as X
|
2013-02-06 03:16:51 +08:00
|
|
|
where calc <> p.post_number and X.id = p.id')
|
|
|
|
end
|
|
|
|
|
|
|
|
def down
|
2013-02-26 00:42:20 +08:00
|
|
|
# don't want to mess with the index ... its annoying
|
2013-02-06 03:16:51 +08:00
|
|
|
raise ActiveRecord::IrreversibleMigration
|
|
|
|
end
|
|
|
|
end
|