【问题标题】:How should I define a constraint for unique array values within a column in Rails?我应该如何在 Rails 的列中定义唯一数组值的约束?
【发布时间】:2016-09-16 00:10:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails-4 rails-activerecord rails-migrations rails-postgresql


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 2011-05-23
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      相关资源
      最近更新 更多