没有Rails和现有ID列的ActiveRecord

时间:2015-09-14 12:34:53

标签: ruby activerecord sqlite

我有一个现有的Sqlite表,它有id列,但它不是主键。主键名为ROWID

所以在我的模型中我已经完成了:

  self.primary_key = "ROWID"

但是,由于id字段实际上具有良好的数据,因此AR在使用ROWID的值实例化记录时会覆盖该数据。

如何保留id列中的值,同时指示ROWID是主键?

[6] pry(main)> Message.first.handle D, [2015-09-14T08:58:59.250979 #921] DEBUG -- : Message Load (0.4ms) SELECT "message".* FROM "message" ORDER BY "message"."ROWID" ASC LIMIT 1 D, [2015-09-14T08:58:59.252343 #921] DEBUG -- : Handle Load (0.1ms) SELECT "handle".* FROM "handle" WHERE "handle"."ROWID" = ? LIMIT 1 [["ROWID", 8]] => #<Handle:0x007ff0f930c0e0 ROWID: 8, id: 8, country: "us", service: "iMessage", uncanonicalized_id: nil>

enter image description here

1 个答案:

答案 0 :(得分:3)

_read_attribute(:id)做了这个伎俩