O documento descreve o uso do gem Machinist-caching para resolver problemas de validação de unicidade ao criar objetos aninhados com Machinist. Ele explica como o Machinist-caching armazena em cache os objetos criados para evitar erros de validação ao criar vários objetos em sequência, e mostra como configurar o reset do cache no RSpec e Test::Unit para garantir dados limpos entre os testes.
3. Scenario
class Country < ActiveRecord::Base
validates :name, presence: true, uniqueness: { allow_blank: true }
end
class State < ActiveRecord::Base
validates :name, presence: true, uniqueness: { allow_blank: true }
end
class City < ActiveRecord::Base
validates :name, presence: true, uniqueness: { allow_blank: true }
end
5. Scenario
State.blueprint(:minas_gerais) do
name { 'Minas Gerais' }
acronym { 'MG' }
country { Country.make!(:brasil) }
end
State.blueprint(:rio_grande_do_sul) do
name { 'Rio Grande do Sul' }
acronym { 'RS' }
country { Country.make!(:brasil) }
end
6. Scenario
City.blueprint(:belo_horizonte) do
name { 'Belo Horizonte(Belzonte!)' }
state { State.make!(:minas_gerais) }
end
City.blueprint(:porto_alegre) do
name { 'Porto Alegre' }
state { State.make!(:rio_grande_do_sul) }
end