将唯一修改器添加到Rails4中现有的模型

时间:2014-02-28 20:09:33

标签: ruby-on-rails ruby-on-rails-4 rake dbmigrate

所以我创建了一个名为User的模型,并且需要使用电子邮件,但我希望在我可能部署我的应用程序之前使其独一无二。我对rails非常陌生,但我已经四处寻找这个场景,我只找到了允许你添加新列并将它们指定为唯一的东西。

感谢任何帮助。我不确定我是应该从rails控制台还是添加 validates_uniqueness_of :email 到我的模型或究竟是什么。 我已经尝试过并运行了rake db:migrate并且没有发生任何事情。

提前致谢!

Python Guy:P

1 个答案:

答案 0 :(得分:1)

正如您所说,您可以使字段唯一添加uniqueness validation 您无需运行迁移。 (我假设您运行了迁移,以便之前使用电子邮件字段创建用户模型/表格)

您需要在模型上添加此内容

class User < ActiveRecord::Base
  validates :email, uniqueness: true # :email makes reference to the user's email attribute
end

测试一下。打开你的控制台。 (终端上的 rails c ) 然后你可以创建一个用户:

User.create! email: "some@mail.com" 

然后,第二次这样做:

User.create! email: "some@mail.com"

您将看到验证错误

ActiveRecord::RecordInvalid: Validation failed: Email has already been taken

如果您执行创建而不是创建!,您将看不到异常。小心那个