更新没有id列的ActiveRecord

时间:2014-06-11 08:37:19

标签: ruby-on-rails activerecord sql-update identity

在迁移中,创建了一个没有id列的表:

create_table :drivers_companies, :id => false do |t|
  t.references :driver
  t.references :company
  t.string :last_sessionid
end

保存记录时:

dc = DriversCompany.where(company_id: 1, driver_id: 5)
if dc.length>0
  dc[0].last_sessionid = req.sessionID
  dc[0].save!
end

我收到错误:

Mysql2::Error: Unknown column 'drivers_companies.' in 'where clause': UPDATE 'drivers_companies' SET 'last_sessionid' = 'bth49sv0outsehcg0ribuiu4h' WHERE 'drivers_companies'.'' IS NULL

如何在没有ID列的情况下更新表中的记录?

1 个答案:

答案 0 :(得分:0)

ActiveRecord需要一个主键来执行此操作。这是无法更改的旧表的问题。不更改表就无法解决这个问题。

有时可以使用“ ActiveRecord的复合主键” gem来解决它: https://github.com/composite-primary-keys/composite_primary_keys