Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >防止相同值再次保存到DB Rails上

防止相同值再次保存到DB Rails上
EN

Stack Overflow用户
提问于 2014-05-19 20:30:01
回答 1查看 38关注 0票数 0

我有一个名为“用户历史记录”的表,一条消息将与用户ID一起保存到该表上,我也不希望同一条消息再次从同一个用户保存。这里是我的控制器中保存消息的部分。

代码语言:javascript
运行
AI代码解释
复制
    if delete == 1
      if UserHistory.where(comments:message, user_id:id).present?
        self.update_attributes(points: (self.points + point))
        UserHistory.where(comments:message, user_id:id).first.destroy        
      end
    elsif UserHistory.where(comments:message, user_id:id).present?
    else  
      self.update_attributes(points: (self.points + point))
      UserHistory.create(comments:message, user_id:id)        
    end

在这段代码中,如果找到具有相同id的消息,则没有给出任何操作,否则将创建一个新字段。

我的问题是在我的本地机器上一切正常工作。但是当我在我的服务器中部署到开发时,它并不总是工作的。有时,来自同一用户的相同消息再次被保存。这一切为什么要发生?有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-19 20:35:48

UserHistory模型中这样做

代码语言:javascript
运行
AI代码解释
复制
validates_uniqueness_of :comments, :scope => :user_id

Update :在else块中,只要反转行,就可以在更新点之前触发验证。

代码语言:javascript
运行
AI代码解释
复制
else      
  user_history = UserHistory.create(comments:message, user_id:id)
  self.update_attributes(points: (self.points + point)) unless user_history.blank?
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23751040

复制
相关文章
EXCEL快速合并相同值
Option Explicit Private srow As Integer Sub T() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim i As Integer, lcol As Integer srow = Application.InputBox("输入处理起始行号") lcol = Range("IV" & srow).End(xlToLe
用户1272546
2018/06/04
8850
EXCEL快速合并相同值
Option Explicit Private srow As Integer Sub T() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim i As Integer, lcol As Integer srow = Application.InputBox("输入处理起始行号") lcol = Range("IV" & srow).End(xlToLeft).Column For i = 1 To lcol Call tt(i) Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
用户1191760
2019/02/27
9660
在mac上配置rails开发环境
  首先,安装home-brew,并且升级到最新的版本,值得一提的是home-brew个人感觉比port要好用,安装软件也方便一点。
用户9127725
2022/08/08
1.3K0
COST值相同?是真是假?
这两天碰到一个问题,一条SQL的两个执行计划COST成本值相同,Oracle是怎么选择的?
bisal
2021/09/06
4200
COST值相同?是真是假?
COST值相同?是真是假?
这两天碰到一个问题,一条SQL的两个执行计划COST成本值相同,Oracle是怎么选择的?
bisal
2020/12/18
5100
COST值相同?是真是假?
map合并,相同键对应的值相加
最近在做统计钱的计算时遇到的一个需求,需要将一个大类别下的每一种钱进行特定的运算然后获得六年的钱,最后将这些钱按照年份进行汇总,获得总得大类型的六年的钱,在这个过程中采用了这种方法,每次算得钱放在map中,然后将map进行合并,写篇随笔mark下。
河岸飞流
2019/08/09
4.1K0
js数组去重,去除相同的值
JavaScript 1.6 / ECMAScript 5  你可以使用原生的方法filter来实现数组去重。
IT工作者
2022/01/18
6.1K0
在Debian 9上使用Apache安装Ruby on Rails
Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。本指南将向您展示如何使用Phusion Passenger在您的Linode上部署Rails应用程序。Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需担心FastCGI或复杂的Web服务器代理。
GIStudy
2018/08/28
5.9K0
在snow leopard上编译Ruby, RubyGems, 和Rails
准备: Snow Leopard系统 XCode编译环境,Snow Leopard系统盘上有 第一步:设置路径 vim ~/.profile 在文件最后加上: export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 使新的路径生效 source ~/.profile 第二步:下载源文件 curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
EltonZheng
2021/01/22
5430
防止 Windows 上的内存检查
像往常一样,我的反调试相关帖子,一切都从微软没有记录的一点无害标志开始。或者至少我是这么认为的。
franket
2021/06/16
4.3K0
C# 存储相同键多个值的Dictionary
C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018、2019,
用户7053485
2020/03/12
4.5K0
MySQL 中 update 修改数据与原数据相同会再次执行吗
本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?
芋道源码
2019/11/18
1.1K0
如何在Ubuntu 18.04上使用RVM安装Ruby on Rails
Ruby on Rails是一个流行的Web应用程序框架,旨在帮助您开发成功的项目,同时编写更少的代码。为了使Web开发变得有趣并且受到强大社区的支持,Ruby on Rails是一个可以免费使用的开源软件,并且欢迎各位用户提出建议以使其更好。
独钓寒江雪_Ly
2018/10/10
8.9K0
如何在Ubuntu 18.04上使用rbenv安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序堆栈之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
司徒永哥
2018/10/10
6.4K0
rails -help
rails new APP_PATH [选项] //APP_PATH项目名称
不知雨
2018/11/13
2.6K0
如何使用RVM在FreeBSD 10.1上安装Ruby on Rails
Ruby on Rails,简称RoR,是一个用Ruby编写的非常流行的全栈Web应用程序开发框架。它允许您快速开发符合MVC(模型 - 视图 - 控制器)模式的Web应用程序。
一步
2018/10/10
4.6K0
Android进程保活全攻略(上)
对于每个公司的APP来说,当然都希望自己APP的进程尽量的不被杀死,于是乎,就有了一些列进程保活的方法出现,网上也有很多关于这类的文章,但网上很多资料往往只告诉了思路,并未将实现代码展示,本次我的博客将分为上下两篇,阐述关于进程保活的所有方法,以及实现的方式,若有错漏之处,大家可以在博客进行留言。
老马的编程之旅
2022/06/22
1.2K0
Android进程保活全攻略(上)
C - Rails
C - Rails C - Rails #include<cstdio> #include<stack> #include<cstring> using namespace std; int a[1010]; int main() { int n; while (~scanf("%d",&n) && n) { while (1) { stack<int> s; scanf("%d",&a[0]); if (!a[0]) { puts(""); brea
杨鹏伟
2020/09/11
6890
Rails资源
Rails Resources Here I list some rails resources I found very helpful. Quick Start Ruby on Rails Guides Rails Bridge Tutorials Point Book The Rails 4 Way, Best rails book. Ruby on Rails Tutorial API Ruby on Rails API Screencast Rails Casts, excellent rai
用户2183996
2018/06/28
8710
点击加载更多

相似问题

如何防止在sql中再次输入相同的值?

17

如何防止再次输入相同的字符

20

Rails保理帮助条件

13

Rails关联不保存到db

33

Rails -选项保存到DB (onchange)

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文