从其他模型访问属性

时间:2017-01-03 14:23:40

标签: ruby-on-rails ruby

这是我的模型(合作伙伴)的一部分

before_validation(on: :create) do
    self.name = name.upcase
    self.institution = institution.upcase
    self.position = position.upcase
    self.street = street.upcase
    self.neighborhood = neighborhood.upcase
    self.city = city.upcase
    self.state = state.upcase
    self.email = email.upcase
    self.birth_city = birth_city.upcase
    self.spouse = spouse.upcase
  end

街道和邻居是地址模型的属性。通过这种方式,我在将其保存到db之前收到错误。我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可能更擅长的是将这些属性委派给Address模型,并使用autosave在保存Partner模型时保留这些属性。

class Partner
  has_one :address, autosave: true

  delegate :street, :neighborhood, to: :address

  # callback code here
end

如果您想要更新所有属性,可以使用assign_attributestransform_values的组合:

before_validation(on: :create) do
  assign_attributes(attributes.transform_values(&:upcase))
end