ruby-on-rails - 使用 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
解决方案
您可以在控制器中使用 find_or_create_by rails 方法。这将找到具有给定属性的第一条记录,如果没有找到,则创建具有该属性的记录。此方法始终返回一条记录,但如果尝试创建但由于验证错误而失败,则不会保留该记录,您得到在这种情况下创造回报的东西。
def create
TeamSelection.find_or_create_by(selection_params)
end
推荐阅读
- powershell - Connect-MicrosoftTeams OAuth 无效的受众错误
- java - Android Java 数据未显示在 TableView 中
- python - 当我们在循环中插入新行时,如何遍历电子表格中的所有行?
- c# - 在 GridView 中删除行时出错
- android - 相机点击 Xamarin Force Portrait
- python - 过滤具有精确字符串匹配的数据框
- nuxt.js - 如何以与@nuxt/apollo subscribeToMore 一起使用的方式设置我的 nuxt
- typescript - 使用 Jest/Supertest 进行 Express/Typescript 测试
- java - 使用 Random 播种时 SecureRandom 会减弱吗?
- c++ - 我可以从使用 c++ 和 windows 连接到服务器的套接字中获得什么信息?