Как можно обновить значение в 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

0 ответов

Другие вопросы по тегам