使用Rails5为每个公司的每个员工生成唯一ID

时间:2017-02-09 13:04:20

标签: ruby-on-rails

我想为每个公司员工创建唯一的ID。例如,目前我是这样的。

公司有很多员工,员工属于公司

 company1= employee1
 company1 = employee2
 company1 = employee3
 company2 = employee4
 company2 = employee5

因此,在更改company_id时,此处的员工ID不会更改。

所以,我想要这样的东西: 对于每个公司,employee_id应该以1开头。 喜欢

  Company1 = employee1
  company1 = employee2
  company1 = employee3
  company2 = employee1
  company2 = employee2

有人可以帮我在Rails5中如何做到这一点吗?

员工表

     id    name      position
     1     aaa       eg_position
     2     vvv        qqq

公司表

    id    name     
    1     xxx
    1     yyy

所以提出它的存储就像        xxx - 1,yyy-2 我想要像xxx-1.yyy-1

2 个答案:

答案 0 :(得分:0)

根据复合键的范围使用唯一性验证。 employee_idcompany_id

validates :employee_id, uniqueness: {scope: [:employee_id, :company_id]}

答案 1 :(得分:0)

我们必须非常清楚。

我假设您有一张员工表,其中存储了所有不同公司的所有员工。

如果是这种情况,则不能有两个相同的主键。你不能这样做。

但你可以做的是拥有另一个领域,也许是员工编号(与id不同),不同公司的不同员工可以是相同的。

我个人不喜欢复合主键的想法。

我要做的是在表格中创建另一个名为:员工编号的列。并使用它来存储你所说的:“id”

我希望这会有所帮助。

修改

进一步解释。

表中的每一行都有一个名为“id”的列。这是一个特殊的名字。这是“主键”的名称。不要更改该名称。同一个表中的两行不能具有相同的“id”或主键。你不能这样做。它是数据库的基础。你不能在同一个表的两行中使用相同的主键 - 对于mysql,psql,Access等。

但您希望识别具有相同“标识号”的两名员工。没关系。你能行的。只是不要拨打员工身份证号码:“id”,因为那样不行。你可以称之为“employee_no”,这样可以正常工作。

显示我的数据库架构,我们可以进一步澄清。

希望这会有所帮助。