如何解决sidekiq 使用相同的数据创建多个记录
我正在使用 sidekiq 开发 Rails 应用程序。我的数据库中有一个 Property
表,address
表中有一个字段 Property
。并且有一个按钮可以使用给定的地址创建属性(可能存在重复的地址)。有一种方法可以检查是否存在具有给定地址的记录,否则它将创建具有给定地址的新记录。但是当我使用 Sidekiq(异步)来调用这个方法(API 调用)时,如果没有给定地址的记录,它会创建多个具有相同地址的记录。如何创建验证或解决此问题的方法。如果存在具有给定地址的属性,则不应创建新属性。有人可以帮我解决这个问题吗?
class Property < ActiveRecord::Base
has_one :user
def create_property_and_assign_user
unless params[:user_id].present?
render json: {success: false,message: "user ID is required."},status: 400 and return
end
if params[:property].blank?
render json: {success: false,message: "Property information missing." },status: 400 and return
end
@user = User.find_by(id: params[:user_id])
unless @user.present?
render json: {success: false,message: "Cannot find user."},status: 404 and return
end
if property_params_error
render json: property_params_error,status: 400 and return
end
# Check if the property exist with the same address. If there is one assign that user to that property.
# Otherwise create a property with the given address and assign that user to that property.
err_msg = Property.create_update_property_and_assign_user(@user,property_params)
if err_msg.present?
render json: {success: false,message: err_msg } and return
end
render json: {success: true,message: "Assign user successfully."}
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。