asa*_*mat 3 database activerecord model ruby-on-rails unique-constraint
class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.string "email", :unique=>true
Run Code Online (Sandbox Code Playgroud)
我试图添加这个独特的选项,使这个电子邮件ID在rails模型中独一无二,但它没有工作,所以我如何才能使这个电子邮件ID独一无二?
vee*_*vee 15
该unique选项应传递给add_index调用,而不是您定义列的位置.
更新您的迁移定义,如下所示:
class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.string "email"
end
add_index :users, :email, unique: true
end
...
end
Run Code Online (Sandbox Code Playgroud)
如果你不想允许null然后使用t.string :email, null: false.
为什么要在数据库级别设置限制,我认为在模型级别设置验证绰绰有余,至少在每当您需要更改或删除限制时,您都不会发现自己需要添加新的迁移
class User < ActiveRecord::Base
validates :email, uniqueness: true
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12285 次 |
| 最近记录: |