首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >唯一性约束ruby on rails字段

唯一性约束ruby on rails字段
EN

Stack Overflow用户
提问于 2011-10-13 15:41:41
回答 1查看 664关注 0票数 2

我是ROR的新手,一直在摸索mike hartl的教程(对于初学者来说,我可能会补充说这是很好的读物)。然而,我正在努力解决一些问题,我的用户模型如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class User < ActiveRecord::Base

    validates :name , :presence => true, :length => {:maximum => 50 }
    validates :email, :presence   => true,
                    :format     => { :with => email_regex },
                    :uniqueness => true
end

然后,我使用rails -c打开ruby控制台并创建一个新用户。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usr = User.new(:name=>"abcd",:email=>"svsvenu@gmail.com")

然后使用以下命令保存它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usr.save

这在我的数据库中创建了一条新记录。到目前为止,如果我再次输入usr.save,什么也没有发生,我查看数据库( good.but ),甚至最后一次更新日期都没有改变。

我注意到的另一件有趣的事情是当我使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
User.create(:name=>"abcd",:email=>"svsvenu@gmail.com"),

很多时候,每次我在控制台中运行它时,都会创建一条记录。

有人能解释一下为什么我的保存不起作用吗?为什么我的唯一性约束被忽略了?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-13 15:49:09

ActiveRecord足够聪明,能够理解当你在一行中输入两次usr.save时,第二次是多余的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usr = User.new
usr.save # usr is saved (if it was valid)
usr.save # usr is already saved and unchanged!  do nothing.
usr.name = "bananas"
usr.save # usr name changed, commit the change!

当您说每次运行User.create都会在控制台中创建一个用户时,您确定他们真的在创建吗?在控制台中,您将看到每次都会返回一个User,但如果在创建尝试中出现错误,则id将为nil。如果您运行的是create!,那么如果User有验证错误(比如重复的电子邮件)并且没有保存,您会看到一个异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7756752

复制
相关文章
Nunit使用心得
测试中,遇到问题,修改完后,无论当前在哪个位置,都可以用Repeat Test Run运行刚才的测试,很方便。 如果多个测试共用一个关键资源,如数据库的连接,监听服务器等,可以用[TestFixtureSetUp]定义一个全局的初始化处理。 测试的方法多种多样,不一定拘泥于比较大小,在某些并发环境下,可以采用其他的途径。比如,我测试通讯过程,测试本身只是一个死循环,睡眠一段时间,醒来就看看某些关键量是否达到要求。然后,定义一个时间(Timespan),以该变量在这个时间内是否达到要求作为测试的依据。 还有,
用户1075292
2018/01/23
5500
简单实用log4j实现日志打印到控制台 原
之后在maven项目的main下面的resources下新建一个名为log4j.properties的文件,里面的内容如下所示:
克虏伯
2019/04/15
6.2K0
Jenkins之Nunit的应用
一、在Jenkins中安装Nunit插件 进入jenkins的插件管理模块,下载Nunit插件。此步骤不做截图说明 二、引用nunit.console的nuget包 通过项目引用Nunit.conso
sam dragon
2020/05/18
6890
Jenkins之Nunit的应用
使用 Nlog 将日志打印到 Logstash 的监控接口
Logstash提供了多种监听日志打印的方式,而Nlog也提供了多种输出日志的方式,当Nlog的输出配置与Logstash的输入配置相对应,就能够让Nlog打印出来的日志都存储到Elasticsearch中 以下介绍3种配置方式: 1)   文件 Logstash: input {       file {            path => "D:/Log/Application/*Log.txt"            type => "Application"       } } Nlog
Venyo
2018/03/15
1.2K0
用Nunit测试通讯程序
    对于Nunit,我是个纯粹的新手,没想到,第一个练手的,居然是一个通讯程序。难度略微大了点。我的通讯程序是一个类似通讯服务器的程序,能够监听和维持多个连接,并实现向任意连接的收发数据。因为原来实现过类似的东西,这次做的步子又前进了一些,把整个服务器的这种工作模式抽象出来了,做成了一个与具体业务无关的通讯层。我只是按照自己的想法把代码写了出来,上层还有很多逻辑层代码,如果在原来,就得等全套代码都好了,才能开始进行测试和修改。不过,现在我有Nunit,更准确的说,是有了Testdriven.Net,终于
用户1075292
2018/01/23
7690
前端写接口 请求后台数据 存vuex中 打印到控制台「建议收藏」
可以看到 store 文件夹中有 home 和 search 两个子文件夹,与home 和 search 文件夹并列有一个 index.js 是 大仓库,两个 小仓库 分别在 home 和 search 两个子文件夹下的 index.js 相关大仓库合并小仓库代码入下图所示
全栈程序员站长
2022/09/27
1.1K0
前端写接口 请求后台数据 存vuex中 打印到控制台「建议收藏」
如何将微信小程序的app.json文件打印到控制台上?
1、点击[编辑器] 2、点击[编译] 3、点击[app.json] 4、点击[编辑器] 5、点击[编译]
裴来凡
2022/05/28
1.4K0
如何将微信小程序的app.json文件打印到控制台上?
使用NUnit在.Net编程中进行单元测试
原文地址:http://www.microsoft.com/china/community/Column/59.mspx 引言: 举一个可能会发生在你身边的事件将更能贴近实际,幸好我们现在就有一件在程序员看来非常普通的任务: 你今天第一天上班,你的项目经理拿给你一叠不算厚的文档,告诉你今天的任务是按照文档中的要求编写一个.Net类,可能因为任务并不复杂,所以他看上去非常的随意。 今天能否很好的完成任务对你来说非常特殊,你拿过来后快速略过了前面大段的项目介绍,因为你知道那些对你并不重要,印象中
菩提树下的杨过
2018/01/22
1.7K0
C# NUnit的安装
NUnit 是一个单元测试框架,专门针对于.NET来写的。NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等。最重要的一点是它适合于所有.NET语言。
zls365
2021/03/16
1K0
Mono 3.2 上跑NUnit测试
NUnit是一款堪与JUnit齐名的开源的回归测试框架,供.net开发人员做单元测试之用,可以从www.nunit.org网站上免费获得,最新版本是2.5。Mono 3.2 源码安装的,在/usr/bin/ 下面有2.4.8 版本: [azureuser@mono /]$ /usr/bin/nunit-console4 NUnit version 2.4.8 Copyright (C) 2002-2007 Charlie Poole. Copyright (C) 2002-2004 J
张善友
2018/01/19
6670
对比MS Test与NUnit Test框架
项目中进行Unit Test时,肯定会用到框架,因为这样能够更快捷、方便的进行测试。
跟着阿笨一起玩NET
2018/09/19
3.5K0
使用git tag打标签
轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明
羽翰尘
2019/11/20
7680
从零打造一个Web地图引擎
说到地图,大家一定很熟悉,平时应该都使用过百度地图、地图、腾讯地图等,如果涉及到地图相关的开发需求,也有很多选择,比如前面的几个地图都会提供一套js API,此外也有一些开源地图框架可以使用,比如OpenLayers、Leaflet等。
街角小林
2022/03/21
4K0
从零打造一个Web地图引擎
【Python】使用logging打日志
https://zhuanlan.zhihu.com/p/31893724 https://zhuanlan.zhihu.com/p/32043593
keloli
2018/09/10
9620
使用jatoolsPrinter实现套打
最近在工作中遇到了套打的需求,前前后后,花了不少时间,现在总结一下套打的实现方式。
week
2018/08/27
9840
使用jatoolsPrinter实现套打
msfconsole 控制台使用和操作[通俗易懂]
Msfconsole提供了一个一体化的集中控制台。通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等。Msfconsole还有第三方程序的接口,比如nmap,sqlmap等,可以直接在msfconsole里面使用。 在启动MSF终端之后,可以首先输入help命令列出MSF终端所支持的命令列表,包括核心命令集和后端数据库命令集。对于其中的大部分命令,你可以输入help[COMMAND],进一步查看该命令的使用帮助信息。
全栈程序员站长
2022/10/29
2.9K0
msfconsole 控制台使用和操作[通俗易懂]
虚幻引擎安装使用
**点击运行,可能会弹出来一些问题。这种情况需要安装下VS2019, 安装VS2019时候需要安装关于游戏的一些插件 **
李小白是一只喵
2021/06/11
1K0
虚幻引擎安装使用
使用DOS打Oracle代码技巧
初学者学习Oracle时一般会用SQP*Plus打Oracle代码,但是Oracle10的是不可以复制黏贴操作,所以需要用DOS来操作,更简单,当然SQL*Plus也有自己的优点
SmileNicky
2019/01/17
5020
.NET 基金会项目介绍-NUnit Test Framework
NUnit Test Framework 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
9520
点击加载更多

相似问题

切换移位,控制和Alt键

12

用控制和移位键改变列表选择的行为与jQuery优化-更新2

11

使用移位键选择多个div

10

角垫表和移位单击选择

40

Java : Mac命令键,用于在列表中进行多项选择(而不是控制)

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文