Tenho um modelo Entity
que pode ter offers
e invoices
. O usuário pode criar formatos de número personalizados para exibir o número da fatura. Por exemplo, o número da fatura interna 23
pode se tornar 2025INV00000023
ou algo assim. Agora, para offers
, precisamos ser capazes de usar um formato de número diferente. 23
pode se tornar 2025OFF00000023
.
Fiz isso criando uma NumberFormat
classe onde o usuário pode configurar formatos de números de várias maneiras. Os formatos de números são anexados a entidades porque todas as faturas de uma entidade precisam ter numeração uniforme/consistente para fins fiscais/contábeis.
Meu Entity
modelo começa assim:
class Entity < ApplicationRecord
has_many :invoices, dependent: :restrict_with_error
has_many :offers, dependent: :restrict_with_error
alguns mais não relacionadoshas_many
belongs_to :invoice_number_format, class_name: 'NumberFormat'
belongs_to :offer_number_format, class_name: 'NumberFormat'
Agora minha NumberFormat
classe precisa ter a outra ponta do belongs_to
relacionamento. Mas não tenho certeza se a duplicação ali é a abordagem correta para evitar que dependent: :restrict_with_error
o usuário exclua formatos de números que ainda estão em uso. O autoformatador do VSCode apenas exclui o segundo ao salvar. Posso, é claro, salvar sem formatar (e tomar muito cuidado para não esquecer sempre que editar este arquivo) e, após testes preliminares, parece que funciona, mas estou pensando se minha abordagem talvez não seja a ideal?
has_many :entities, inverse_of: :invoice_number_format,
dependent: :restrict_with_error
# This line gets deleted on save
has_many :entities, inverse_of: :offer_number_format,
dependent: :restrict_with_error