Как можно обновить значение в update_attribute
У меня есть тест, который должен настроить состояние базы данных:
before do
Site.first.update_attribute(:primary_domain, @params[:order][:primary_domain])
end
Но по какой-то причине это модифицирует @params:
before do
@params[:order][:primary_domain].must_equal "example.com"
Site.first.update_attribute(:primary_domain, @params[:order][:primary_domain])
@params[:order][:primary_domain].must_equal "example.com"
end
Это не удается, второй @params[:order][:primary_domain].must_equal "example.com"
не удается, что-то обновляет @params[:order][:primary_domain]
там. Странно, я бы ожидал update_attribute(name, value)
не трогать value
но как-то так и есть.
Это можно обойти с .dup
, Но мне интересно, что может быть причиной этого. Это может быть проблема сферой? Что-то связанное с тем, что я нормализую Site.primary_domain
на save
, может быть?
# Override the primary_domain setter.
# Allows us to normalise the domain
def primary_domain=(primary_domain)
return primary_domain unless primary_domain.is_a?(String)
write_attribute(:primary_domain, Site.parse_uri(primary_domain.dup).host)
end