Ruby on rails Ruby/Rails、ActiveRecord唯一性验证和ActiveRecord导入gem
在我的RESTfulAPI中,我对ActiveRecord类中的某个数据库列“X”进行了唯一性验证,并且我使用了用于批量保存数据的。在以下两种情况下,我的应用程序都应拒绝请求:Ruby on rails Ruby/Rails、ActiveRecord唯一性验证和ActiveRecord导入gem,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,在我的RESTfulAPI中,我对ActiveRecord类中的某个数据库列“X”进行了唯一性验证,并且我使用了用于批量保存数据的。在以下两种情况下,我的应用程序都应拒绝请求: 如果数据库中存在具有相同“X”值的记录,则拒绝新对象 拒绝批量保存两个具有相同“X”值的对象 看起来(1)运转良好,但(2)并非如此。这是预期的吗(可能是因为ActiveRecord唯一性验证是在数据库“外部”执行的),如果是,除了在导入新数据之前手动验证之外,是否有简单的方法来处理此问题?ActiveRecord导入g
看起来(1)运转良好,但(2)并非如此。这是预期的吗(可能是因为ActiveRecord唯一性验证是在数据库“外部”执行的),如果是,除了在导入新数据之前手动验证之外,是否有简单的方法来处理此问题?ActiveRecord导入gem,但处理唯一性验证的方式可能不同。如果数据库支持它,则在\u duplicate\u key\u update上有一个
,如果发现重复的键,它将更新另一列。MySql支持它
因此,您可以有一个标志类型列,每当试图保存重复项时,该列将通过\u duplicate\u key\u update上的更新。或者你必须手工进行这一验证
编辑
答案可能不正确,请参阅OP的注释以了解详细信息。如上所述,示例(1)运行良好——因此它似乎支持某种唯一性验证——但(2)不支持。似乎(2)中的行为是预期的,因为import
方法只是在每个对象上调用valid?
,在保存之前彼此不了解(因此唯一性验证不会失败)