我的迁移文件中有以下内容
def self.up
create_table :payment_agreements do |t|
t.boolean :automatic, :default => true, :null => false
t.string :payment_trigger_on_order
t.references :supplier
t.references :seller
t.references :product
t.timestamps
end
end
我想确保如果指定了 product_id 它是唯一的,但我也想允许 null 所以我的模型中有以下内容:
validates :product_id,
:uniqueness => true,
:allow_nil => true
效果很好,但我应该在迁移文件中添加一个索引
add_index :payment_agreements, :product_id, :unique => true
显然,当为 product_id 插入两个空值时,这将引发异常。我可以简单地省略迁移中的索引,但是我有可能得到两个具有相同 product_id 的 PaymentAgreements,如下所示:并发性和完整性
我的问题是处理这个问题的最好/最常见的方法是什么