Sequências de escopo no ActiveRecord

Recentemente, tenho trabalhado no Help, que é uma ferramenta de suporte que está sendo construída por meio da plataforma Assembly .

Internamente, usamos UUIDs para tudo, mas para as interações voltadas para o usuário, queríamos bons números inteiros de id. Portanto, o que queremos é uma coluna inteira única de incremento automático. Baixo e eis que isso não existe no Postgres, tanto quanto eu posso dizer. Aproveitei a oportunidade para fazer algo que estou ansioso para fazer, criar uma joia.

Apresentando Sequential . Sequential é um plugin ActiveRecord thread-safe que oferece uma coluna inteira única de incremento automático realmente fácil de usar

Aqui está um exemplo de modo Rails para um widget:

class Widget < ActiveRecord::Base
include
ActiveRecord::UUID

belongs_to
:account
end

Vamos adicionar uma coluna inteira única de incremento automático ao widget que tem como escopo :account_id:

class Widget < ActiveRecord::Base
include
ActiveRecord::UUID

belongs_to
:account

sequential scope
: :account_id
end

Tudo que você precisa fazer agora é adicionar uma migração para criar a coluna. Por padrão, a coluna é chamada sequential_id, mas podemos substituí-la:

sequential column: :number, scope: :account_id

É isso, bom e simples. Confira: https://github.com/austinylin/sequential ougem install sequential

Muito obrigado a Pugio por sua ajuda na criação do Sequential .