Rieles: validar la exclusividad de los atributos anidados con el ámbito primario del principal
Tengo un problema con la validación de unicidad de ámbito en Rails para atributos anidados con un padre de padre.
Antecedentes
Tengo una aplicación de rieles 4 con 3 modelos:
#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
Problema
Quiero hacer un alcancepara asegurarse de que el atributo : correo electrónico del modelo EmailAddresses único a nivel de cuenta (La cuenta es padre de contacto, que es padre de EmailAddress).
Como se sugiere enhttp://guides.rubyonrails.org/active_record_validations.html, Lo intenté :
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
Esto genera el error "la columna email_addresses.account no existe" ¿Qué debo hacer?
Gracias por tu ayuda !