使用Rails5为每个公司的每个员工生成唯一的ID
我想为公司的每个员工创建唯一的ID。例如,目前我越来越喜欢这样。使用Rails5为每个公司的每个员工生成唯一的ID
公司有很多员工和员工belongs_to的公司
company1= employee1
company1 = employee2
company1 = employee3
company2 = employee4
company2 = employee5
所以,这里的员工ID是没有得到改变,而COMPANY_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
使用基于组合键范围的唯一性验证。 employee_id
和company_id
validates :employee_id, uniqueness: {scope: [:employee_id, :company_id]}
我们必须非常清楚。
我假设你有一张员工表,其中存储了所有不同公司的所有员工。
如果是这样的话,那么你不能有两个相同的主键。你不可以做这个。
但是你可以做的是有另一个领域,也许员工数量(这是不同的ID),可以是不同的公司在不同的雇员相同。
我个人不喜欢复合主键的想法。
我会做的是在你的表中创建另一个名为employee number的列。并用它来存储你所说的:“id”
我希望这有助于。
编辑:
进一步解释。
表中的每一行都有一个名为“id”的列。这是一个特殊的名字。这是“主键”的名称。不要改变这个名字。同一个表中的两行不能具有相同的“id”或主键。你做不到。这是数据库的基础。您不能在同一表的两行中具有相同的主键 - 对于mysql,psql,Access等。
但您要标识具有相同“标识号”的两名雇员。没关系。你能行的。只是不要打电话给员工识别号码:“id”,因为这不起作用。你可以把它叫做“employee_no”,这样可以正常工作。
显示我的数据库模式,我们可以进一步澄清。
希望这有助于。
你能解释一下吗? –
@SonaliShrivastava更新了答案。 – BKSpurgeon
你不应该担心或更改ID。 Rails会为你处理它。如果您尝试自己操作模型ID,您可能会遇到错误。我完全不明白你为什么需要这样做 –