2

我想在我的Rails CRM应用程序中存储一些潜在客户。以下是Lead模型的示例。如何为Rails中的列定义唯一数组值的约束?

class Lead < ActiveRecord::Base 
    belongs_to :campaign 
    validates_presence_of :name 
end 

以下是我用于将我的潜在客户存储在数据库中的迁移示例。

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 

有可能我的潜在客户有多个电子邮件地址,联系号码和要求。因此,我决定将前面提到的colums实现为数组。

我想确保一个潜在客户的电子邮件地址或联系人都不用于在数据库中创建一个新的潜在客户行。

我应该使用模型还是通过迁移来实现?请指导我如何实现这种轨道方式。

回答

0

我不喜欢你的实现方法,它只是稍后寻找麻烦:表内的数组 - 请尽量避免。我不认为这种情况需要它。

让自己变得轻松:您应该使用另一个表格作为主要电子邮件地址。即emails_table。列:id,lead_id和电子邮件。并通过lead_id外键链接。那么当创建新的潜在客户时,您必须通过检查该电子邮件表来确认该潜在客户是否已经存在。所以是的我的建议是通过使用模型而不是迁移。