在迁移中,创建了一个没有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列的情况下更新表中的记录?
答案 0 :(得分:0)
ActiveRecord需要一个主键来执行此操作。这是无法更改的旧表的问题。不更改表就无法解决这个问题。
有时可以使用“ ActiveRecord的复合主键” gem来解决它: https://github.com/composite-primary-keys/composite_primary_keys