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 !