Ruby on rails 4 我应该如何为Rails中的列中的唯一数组值定义约束?

Ruby on rails 4 我应该如何为Rails中的列中的唯一数组值定义约束?,ruby-on-rails-4,rails-activerecord,rails-migrations,rails-postgresql,Ruby On Rails 4,Rails Activerecord,Rails Migrations,Rails Postgresql,我正在尝试在Rails CRM应用程序中存储一些潜在客户。这是示例铅模型 class Lead < ActiveRecord::Base belongs_to :campaign validates_presence_of :name end class Lead

我正在尝试在Rails CRM应用程序中存储一些潜在客户。这是示例铅模型

class Lead < ActiveRecord::Base
  belongs_to :campaign
  validates_presence_of :name
end
class Lead
下面是一个迁移示例,我正在使用它将潜在客户存储在数据库中

class CreateLeads < ActiveRecord::Migration
  def change
    create_table :leads do |t|
      t.string :name,          null: false, default: ""
      t.string :contacts,      null: false, array: true, default: []
      t.string :emails,        null: false, array: true, default: []
      t.string :budget,        null: false, default: "Not Specified"
      t.string :requirements,  null: false, array: true, default: []
      t.timestamps null: false
    end
  end
end
class CreateLeads
我的潜在客户可能有多个电子邮件地址、联系电话和要求。因此,我决定将前面提到的列实现为数组

我希望确保没有潜在客户的电子邮件地址或联系人用于在数据库中创建新潜在客户行

class CreateLeads < ActiveRecord::Migration
  def change
    create_table :leads do |t|
      t.string :name,          null: false, default: ""
      t.string :contacts,      null: false, array: true, default: []
      t.string :emails,        null: false, array: true, default: []
      t.string :budget,        null: false, default: "Not Specified"
      t.string :requirements,  null: false, array: true, default: []
      t.timestamps null: false
    end
  end
end

我应该使用模型还是通过迁移来实现这一点?请告诉我如何用rails的方式实现它。

我一点也不喜欢你的实现方法,它只是在以后找麻烦:表中的数组-如果可能,请避免。我不认为这种情况需要这样做

让事情变得简单:你应该使用另一个表格作为潜在客户的电子邮件地址。i、 e.电子邮件和表格。列:id、lead_id和电子邮件。并通过lead_id外键链接。然后,当创建一个新的潜在客户时,您必须通过检查电子邮件表来验证该潜在客户是否已经存在该电子邮件地址。所以我的建议是使用模型,而不是迁移