【问题标题】:Adding Unique Modifier to an already existing model in Rails4在 Rails4 中为现有模型添加唯一修饰符
【发布时间】:2014-04-02 00:41:21
【问题描述】:

所以我创建了一个名为 User 的模型,并且它需要电子邮件,但我想在可能部署我的应用程序之前使其独一无二。我对 Rails 非常陌生,但我环顾四周寻找这种情况,只发现允许您添加新列并将它们指定为唯一的东西。

感谢任何帮助。我不确定是否应该从 rails 控制台执行此操作或添加 validates_uniqueness_of :email 到我的模型或究竟是什么。 我已经尝试过了并运行了 rake db:migrate ,但什么也没发生。

提前致谢!

一个 Python 人:P

【问题讨论】:

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


    【解决方案1】:

    如您所说,您可以添加 uniqueness validation 使字段唯一 您不需要运行迁移。 (我假设您运行迁移是为了创建 User 模型/表之前带有 email 字段)

    你需要在你的模型上添加这个

    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
    

    如果您执行 create 而不是 create!,您将不会看到异常。小心点

    【讨论】:

    • 太棒了!如果我需要做一个 db:migrate 之后,我想我很困惑。我还在学习 rake :3 非常感谢您的帮助,您的回答非常有用!
    猜你喜欢
    • 2012-03-15
    • 2018-02-06
    • 2019-07-11
    • 2022-06-28
    • 1970-01-01
    • 2018-10-19
    • 2021-11-18
    • 1970-01-01
    • 2023-01-03
    相关资源
    最近更新 更多