2
我是ROR新手,一直试图通过mike hartl的教程(我可能会添加优秀的阅读初学者)摸索自己的方式。然而,有一些我正在努力,我的用户模型如下所示。Rails领域的唯一性约束红宝石
class User < ActiveRecord::Base
validates :name , :presence => true, :length => {:maximum => 50 }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => true
end
然后我用Rails -c打开红宝石控制台,并通过使用
usr.save
创建一个新用户
usr = User.new(:name=>"abcd",:email=>"[email protected]")
然后我将它保存这在我的数据库中创建一个新的记录。到目前为止很好。但如果我再次输入 usr.save ,没有任何反应,我查看数据库(sqlite),甚至没有更改最后更新日期。
另一个有趣的事情,我注意到的是,当我使用
User.create(:name=>"abcd",:email=>"[email protected]"),
多次,有一个记录创建每次我在控制台运行时间。
有人可以解释为什么我的保存不起作用,以及为什么我的唯一性约束被忽略?
在此先感谢
感谢您的回答。创建确实在我的表中创建了多个记录。对validate_uniqueness_of函数的更改修复了创建。每当我更改代码或者自动处理时,是否应该退出并重新打开导轨控制台。 – user993797
哦,是的,这将做到这一点。例如,当您更改代码或至少运行'load user.rb'时,您需要重新加载控制台以重新加载更改的类。虽然当你这样做的时候事情会变得有点怪异(例如验证会被包括在内,并且随后会多次运行)。 – numbers1311407
@ user993797你可以在'rails console'中输入'reload!',它会重新加载(几乎)所有的东西。 –