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外鍵鏈接。那麼當創建新的潛在客戶時,您必須通過檢查該電子郵件表來確認該潛在客戶是否已經存在。所以是的我的建議是通過使用模型而不是遷移。