首页 > 解决方案 > 使用 Ajax 发布时如何检查我的数据库中是否已存在记录?

问题描述

使用 Ajax 发布时如何检查我的数据库中是否已存在记录?

这是我的 Ajax 代码:

    $.ajax({
        type: "POST",
        url: "team_selections#create",
        data: {
            team_selection: {
                season_id: "1",
                club_id: "1",
                player_id: id,
                fixture_week: "1",
                position: pos
            }
        },
        dataType: "html"
    })

这是我的 Rails 控制器代码:

    def create
        if !TeamSelection.where(season_id: params[:season_id], club_id: params[:club_id], player_id: params[:player_id], fixture_week: params[:fixture_week], position: params[:position]).exists?
        TeamSelection.create(selection_params)
        end
    end


private
  def selection_params
    params.require(:team_selection).permit(:season_id, :club_id, :player_id, :fixture_week, :position)
  end

标签: ruby-on-railsajaxdatabase

解决方案


您可以在控制器中使用 find_or_create_by rails 方法。这将找到具有给定属性的第一条记录,如果没有找到,则创建具有该属性的记录。此方法始终返回一条记录,但如果尝试创建但由于验证错误而失败,则不会保留该记录,您得到在这种情况下创造回报的东西。

def create
  TeamSelection.find_or_create_by(selection_params)
end

推荐阅读