我正在使用Google Places API来收集个人资料中的任意数量的位置。每个位置都有profile_id,4个地址字段以及lat和long。我想确保每个配置文件的所有位置都是唯一的。
目前,我正在使用下面的代码来验证4个地址字段的唯一性,但这会导致验证错误返回到视图。我宁愿保存配置文件和位置(删除重复项)而不向用户返回错误。
解决这个问题的最佳方式是什么?有轨道方法还是我应该创建自己的验证前功能?
class Profile < ActiveRecord::Base
has_many :locations
accepts_nested_attributes_for :locations, allow_destroy: true
etc etc
end
class Location < ActiveRecord::Base
belongs_to :profile
# Only allow unique locations for each profile
validates_uniqueness_of :profile_id, scope: [:sublocality, :locality, :administrative_area_level_1, :country]
etc etc
end
答案 0 :(得分:0)
您可以在error[:profile_id].present?
回调中查看after_validation
。
如果存在与profile_id
相关的错误,请删除重复项,然后再次删除save
如果您有与profile_id
相关的其他验证,请务必小心,并检查是否存在特定错误消息。