2017-01-03 10 views
0

これは私のモデル(パートナー)の一部であるアクセス他のモデルから属性

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に保存する前にエラーが発生しています。どうすれば解決できますか?あなたがより良いAddressモデルにそれらの属性を委任し、あなたがPartnerモデルを保存するときにそれらが持続持ってautosaveを使用してやっているかもしれない何を

+0

は 'Address'モデルに関連付けられているあなたの' Partner'モデルです:assign_attributestransform_valuesを組み合わせて使用​​することができますか?その協会の様子はどうですか? 'Address'または' Partner'モデルの属性を 'upcase 'したいですか? – spickermann

答えて

1

..

class Partner 
    has_one :address, autosave: true 

    delegate :street, :neighborhood, to: :address 

    # callback code here 
end 

あなたはすべての属性をUPCASEしたい場合は、 ( `has_many`または` belongs_to`協会で)

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

ありがとうございました!それを見て、私は私の問題を解決するために悪い解決策を使うことに気付きました。 – Kirk

関連する問題