Rails - Validierung verschachtelter Attribute Eindeutigkeit mit dem übergeordneten Bereich des übergeordneten Bereichs

Ich habe ein Problem mit der Gültigkeitsprüfung der Eindeutigkeit in Rails für verschachtelte Attribute mit einem übergeordneten Element des übergeordneten Elements.

Hintergrund

Ich habe eine Rails 4-Anwendung mit 3 Modellen:

#app/models/account.rb
class Account < ActiveRecord::Base
  has_many :contacts, dependent: :destroy
end

#app/models/contact.rb
class Contact < ActiveRecord::Base
  belongs_to :account
  has_many :email_addresses, dependent: :destroy, validate: :true, inverse_of: :contact
  accepts_nested_attributes_for :email_addresses,allow_destroy: true
  validates :email_addresses, presence: true
end

#app/models/email_address.rb
class EmailAddress  < ActiveRecord::Base
  belongs_to :contact, inverse_of: :email_addresses

  validates :label, presence: true
  validates :contact, presence: true
  validates :email, uniqueness: true, presence: true
  validates_email_format_of :email
end

Problem

Ich möchte einen Bereich machen,um sicherzustellen, dass das Attribut : E-Mail des Modells EmailAddressist auf Kontoebene einzigartig (Konto ist übergeordnetes Element von Contact, das selbst übergeordnetes Element von EmailAddress ist).

Wie bei vorgeschlagenhttp://guides.rubyonrails.org/active_record_validations.html, Ich habe es versucht :

 class EmailAddress  < ActiveRecord::Base
  belongs_to :contact, inverse_of: :email_addresses

  validates :label, presence: true
  validates :contact, presence: true
  validates :email, presence: true, uniqueness: { scope: :account, 
                    message: "This contact email is already taken" }
  validates_email_format_of :email
 end

Dies löst den Fehler "Spalte email_addresses.account existiert nicht" aus. Was soll ich tun?

Danke für deine Hilfe !

Antworten auf die Frage(2)

Ihre Antwort auf die Frage