Mysql 在rails中检查数据库中的重复记录
这就是我的情况,我通过API从我的Shopify商店获取数据并将其保存到数据库中。我的问题是如何防止重复记录侵入数据库。有关于这个的代码片段吗?非常感谢。我只希望保存从商店创建的新条目,而不是让所有条目一次又一次地进入数据库。您可以在模型中添加一个Mysql 在rails中检查数据库中的重复记录,mysql,ruby-on-rails,shopify,Mysql,Ruby On Rails,Shopify,这就是我的情况,我通过API从我的Shopify商店获取数据并将其保存到数据库中。我的问题是如何防止重复记录侵入数据库。有关于这个的代码片段吗?非常感谢。我只希望保存从商店创建的新条目,而不是让所有条目一次又一次地进入数据库。您可以在模型中添加一个验证:字段的唯一性,或在数据库中使用唯一约束,或两者兼而有之 重复条目将引发异常,您可以捕获并忽略该异常。另一种方法是仅从Shopify获取新记录。例如,如果您正在同步产品,并且您从Shopify商店中提取的最后一个产品ID是12345,那么您只需点击
验证:字段的唯一性,或在数据库中使用唯一约束,或两者兼而有之
重复条目将引发异常,您可以捕获并忽略该异常。另一种方法是仅从Shopify获取新记录。例如,如果您正在同步产品,并且您从Shopify商店中提取的最后一个产品ID是12345
,那么您只需点击ID大于12345
的所有产品的API即可:
products = ShopifyAPI::Product.all(params: {since_id: 12345})
或者,您可以在某处记录上次同步产品的时间,如products\u last\u synced\u at
字段。您可以点击Shopify API查找自上次同步以来已更新的记录:
products = ShopifyAPI::Product.all(params: {updated_at_min: shop.products_last_synced_at})
最后,我会使用类似于Product.find\u或\u create\u by\u Product\u id(12345)
的东西来更新应用程序数据库,并使用Shopify提供的id
作为本地Product
模型的Product\u id
属性。这将确保每次同步订单时,都会更新已同步的订单,并添加尚未同步的订单
当然,请确保通过将以下内容放入迁移中,为产品
表的产品id
列编制索引:
add_index :products, :product_id, unique: true
此索引将确保您无法使用重复的product\u id
值创建产品记录。如果需要,对于一些奇怪的边缘情况,您可以随时抢救ActiveRecord::RecordNotUnique
错误并进行处理。请提供一些代码。因此,如果这是我商店中的数据进入我的数据库:1,2,3,4,5,我加上值6,(数据现在是1,2,3,4,5,6),我的数据库中只会保存6?是这样吗?我有一个错误:ActiveRecord::RecordNotUniquee每个数据段都一个接一个地进入。如果它违反了约束,则应引发异常。忽略异常并继续下一条记录。是的,我认为它违反了我在数据库中所做的约束,这就是为什么我会出现该错误。那么我怎样才能破例进入下一个记录呢?这个错误使我无法继续前进。很抱歉,我是rails新手。begin//your code here rescue Exception=>e//do nothing here end