在我的迁移文件中,我有一个变量,其值应该是唯一的或nil
。我怎样才能做到这一点?我当前的设置会生成各种验证错误,我认为因为nil值不是唯一的,并且在当前设置中它希望看到一个唯一值。
我目前有:
迁移文件:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :my_var
...
end
end
end
class AddIndex < ActiveRecord::Migration
def change
add_index :users, :my_var, unique: true
end
end
模型文件:
validates :my_var, uniqueness: true
有没有办法允许它nil
,如果它有值,需要一个唯一值,并使它成为索引?
答案 0 :(得分:2)
至于你的模型验证,你可以这样做:
validates :my_var, uniqueness: { allow_nil: true }
或者,如果你想包含空字符串(即""
)
validates :my_var, uniqueness: { allow_blank: true }
但是,无论如何,你必须放弃你的唯一索引
编辑:索引部分可能没有必要,如下面的评论中所述。