我想为每个公司员工创建唯一的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
答案 0 :(得分:0)
根据复合键的范围使用唯一性验证。 employee_id
和company_id
validates :employee_id, uniqueness: {scope: [:employee_id, :company_id]}
答案 1 :(得分:0)
我们必须非常清楚。
我假设您有一张员工表,其中存储了所有不同公司的所有员工。
如果是这种情况,则不能有两个相同的主键。你不能这样做。
但你可以做的是拥有另一个领域,也许是员工编号(与id不同),不同公司的不同员工可以是相同的。
我个人不喜欢复合主键的想法。
我要做的是在表格中创建另一个名为:员工编号的列。并使用它来存储你所说的:“id”
我希望这会有所帮助。
修改强>
进一步解释。
表中的每一行都有一个名为“id”的列。这是一个特殊的名字。这是“主键”的名称。不要更改该名称。同一个表中的两行不能具有相同的“id”或主键。你不能这样做。它是数据库的基础。你不能在同一个表的两行中使用相同的主键 - 对于mysql,psql,Access等。
但您希望识别具有相同“标识号”的两名员工。没关系。你能行的。只是不要拨打员工身份证号码:“id”,因为那样不行。你可以称之为“employee_no”,这样可以正常工作。
显示我的数据库架构,我们可以进一步澄清。
希望这会有所帮助。