Created
September 6, 2021 14:25
-
-
Save rannyeribaptist/f00e2a56ca27c0ec46262203b7a1e454 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Policy | |
# A classe abaixo herda de ApplicationRecord. | |
# | |
# Sempre que eu chamar GracePeriod.find(id), ele vai buscar na tabela | |
# do banco de dados policy_grace_period. | |
# | |
# Eu preciso que essa classe seja volátio pra criar compatibilidade com dados antigos | |
# presentes no meu banco de dados, pois essa classe antigamente herdava de outra classe, chamada Endorsement. | |
# | |
# Então sempre que você buscava por um GracePeriod, ele pegava um registro da tabela policy_endorsements. | |
# | |
# O que preciso fazer é: | |
# sempre que alguém buscar por GracePeriod.find(15), ele vai pegar o dado no banco, vai verificar o type do registro, | |
# e se o type for "GracePeriod::Endorsement", significa que o registro é antigo e veio da tabela policy_endorsements. | |
# sendo assim, eu iria definir a classe abaixo como: | |
# class GracePeriod < Policy::Endorsement | |
# em todos os outros cenários (incluindo novos registros), ele ficaria exatamente como está: | |
# class GracePeriod < ApplicationRecord | |
# | |
# Então a pergunta é: é possível fazer essa verificação dentro do module (antes de definir a classe)? | |
# seria possível de alguma forma puxar a informação do banco, antes da classe ser montada? Algo do tipo: | |
# | |
# if Object.inspect.type.eql? 'Policy::Endorsement' | |
# class GracePeriod < Policy::Endorsement | |
# else | |
# class GracePeriod < ApplicationRecord | |
# end | |
class GracePeriod < ApplicationRecord | |
end | |
end |
Essa era de fato uma das possibilidades que eu tinha pra solucionar esse problema. E nesse caso acho que vou nele mesmo :)
Valeuzão <3
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
se eu entendi bem, você tem duas tabelas, uma com dados "legados" e a outra com os novos dados, certo? Neste caso é melhor definir dois models, um para cada tabela e no
find
doGracePeriod
tentar buscar na tabela antiga primeiro: