【发布时间】:2018-09-09 13:40:48
【问题描述】:
我有一个表有两列 employee_id 和 manager_id 在 Mysql 中没有主键。 Employee 和 Employee_Manager 有多对多的关系。为了更新记录,我需要Employee_Manager 表上的主键。因此,在 Rails 中,如何生成向现有表 id(主键)添加列并为现有表中的所有记录设置行值的迁移。
【问题讨论】:
-
没有表只有两列。其中没有 id 或 autoincrement 列。该表已添加到我们的应用程序中,用作没有任何模型的连接表。
-
所以,如果你想更新现有记录,那么你需要
employee_id以及manager_id -
是的,我需要通过用每行的行值填充 id 来将 id 列添加到现有表中。
-
您不需要
employee_manager表中的id列。您始终可以通过Employee.find(employee_id).managers找到记录,这将为您提供所有经理的列表,然后您可以随时执行Employee.find(employee_id).managers.find(manager_id)之类的操作来查找您要查找的记录。 -
emp_manager = EmployeeManager.where(employee_id: self.id, manager_id: manager.id).first emp_manager.update_attribute(:from_date, Time.now)试图这样做但我得到一个错误:ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column 'employee_manager.' in 'where clause': UPDATEemployee_managerSET @987654332 @ = '2018-09-09 12:24:00' 其中employee_manger.`` 为空):
标签: mysql ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2