Я построил схему модели Rails для соответствия iphone contact s, которая включает в себя многозначные ассоциации электронной почты и т. Д. У меня есть действие контроллера, которое импортирует весь массив контактов (вероятно, 1000+ объектов, каждый потенциально содержащий несколько объектов электронной почты). Мне нужно, чтобы это выполнялось достаточно эффективно, поэтому я смотрел на activerecord-import для пакетного импорта. Однако мне нужно проверить уникальность электронной почты в рамках каждого контакта, чтобы я не добавлял дубликаты каждый раз, когда пакет импортируется. Должен ли я создать свою собственную версию update_attributes
вручную или существует ли существующее решение, которое вы могли бы рекомендовать для проверки/обновления множества записей, подобных этому?Синхронизация контактов iphone с рельсами
Контакт Модель
class Contact > ActiveRecord::Base has_many :addresses has_many :emails has_many :websites accepts_nested_attributes_for :addresses, :emails, :websites attr_accessible :prefix, :first_name, :middle_name, :last_name, :suffix, :nickname, :organization, :job_title, :department, :birthday, :addresses_attributes, :emails_attributes, :websites_attributes end
Email Модель
class Email > ActiveRecord::Base belongs_to :contact # validates_uniqueness_of :account, :scope => :contact_id # prevents duplicate, but also skips sibling values # validates :contact_id, :presence => true, :on => :create # causes 422 error validates :account, :presence => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create attr_accessible :contact_id, :email_id, :account, :label end
Очень полезно, спасибо. Я покачал свой собственный метод на сервере. В конечном итоге я попытаюсь выполнить проверку на клиенте и попробовать активировать импорт-импорт в это время. –