如何在update_attribute中更新值

时间:2014-04-22 10:30:02

标签: ruby-on-rails 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,但不知何故,它会。{/ p>

可以用.dup来规避它。但我对可能导致这种情况的原因感兴趣。这可能是范围问题吗?可能与我Site.primary_domainsave正常化的事实有关吗?

# 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 个答案:

没有答案